SOQL Lib v5.0.0发布:更强大的SOQL查询库与Mock测试支持

SOQL Lib v5.0.0发布:更强大的SOQL查询库与Mock测试支持

soql-lib The SOQL Lib provides functional constructs for SOQL queries in Apex. soql-lib 项目地址: https://gitcode.com/gh_mirrors/so/soql-lib

项目简介

SOQL Lib是一个用于简化Salesforce平台中SOQL查询操作的Apex库。它通过面向对象的方式构建SOQL查询,提供了比原生SOQL更灵活、更安全的查询方式。最新发布的v5.0.0版本带来了多项重要改进,特别是在文档完善、Mock测试支持和代码架构优化方面。

文档全面升级

v5.0.0版本对文档进行了全面升级,现在开发者可以更轻松地理解和使用SOQL Lib。文档中包含了大量实际用例展示,每个示例都同时展示了原生SOQL语法和对应的SOQL Lib实现方式。

例如,一个简单的账户查询:

原生SOQL:

SELECT Id, Name, BillingCity
FROM Account

对应的SOQL Lib实现:

SOQL.of(Account.SObject)
    .with(Account.Id, Account.Name, Account.BillingCity)
    .toList();

这种对比展示方式让开发者能够快速掌握从原生SOQL迁移到SOQL Lib的方法。

增强的Mock测试支持

新的Mockable接口

v5.0.0引入了Mockable接口,为未来的Mock测试功能扩展奠定了基础。这个接口提供了三种主要的Mock返回方式:

public interface Mockable {
   // 返回单个SObject记录
   Mockable thenReturn(SObject record);
   // 返回SObject记录列表
   Mockable thenReturn(List<SObject> records);
   // 返回计数结果
   Mockable thenReturn(Integer count);
}

使用示例:

List<Account> accounts = new List<Account>{
    new Account(Name = 'MyAccount 1'),
    new Account(Name = 'MyAccount 2')
};

SOQL.mock('ExampleController.getPartnerAccounts')
    .thenReturn(accounts);

自动去除多余字段

新版本还引入了自动去除未查询字段的功能,解决了之前Mock测试中可能隐藏的问题。在之前的版本中,Mock会返回对象的所有字段,即使这些字段并未在查询中指定,这可能导致单元测试通过但运行时出错。

现在,SOQL Lib会自动去除Mock记录中未被查询的字段,使测试环境更接近真实运行环境。目前这一功能仅支持基本字段,对关系字段和子查询的支持将在未来版本中添加。

代码架构优化

更好的封装性

v5.0.0改进了方法的返回类型,现在所有SOQL方法都返回Queryable接口而非具体的SOQL类。这一变化带来了多重好处:

  1. 支持松耦合设计
  2. 提供更好的封装性
  3. 更符合依赖倒置原则

修改前:

public SOQL with(SObjectField field) {
    // ...
}

修改后:

public Queryable with(SObjectField field) {
    // ...
}

SObjectField性能优化

在内部实现上,v5.0.0将字段名称的获取方式从:

field.getDescribe().getName()

优化为:

field.toString()

这一改动使得SObjectField相关操作性能提升了约9倍。

向后兼容性说明

虽然v5.0.0引入了多项改进,但仍保持了良好的向后兼容性:

  1. 旧的Mock方法仍然可用,但推荐使用新的SOQL.mock(...).thenReturn(...)方式
  2. 如果代码中直接使用了SOQL类作为返回类型,需要修改为SOQL.Queryable

总结

SOQL Lib v5.0.0通过文档完善、Mock测试增强和代码优化,为Salesforce开发者提供了更强大、更可靠的SOQL查询解决方案。特别是新的Mockable接口和自动字段去除功能,大大提升了单元测试的可靠性和开发效率。代码架构的优化也为未来的功能扩展打下了坚实基础。

soql-lib The SOQL Lib provides functional constructs for SOQL queries in Apex. soql-lib 项目地址: https://gitcode.com/gh_mirrors/so/soql-lib

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎霆禄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值