SOQL Lib v5.0.0发布:更强大的SOQL查询库与Mock测试支持
项目简介
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
类。这一变化带来了多重好处:
- 支持松耦合设计
- 提供更好的封装性
- 更符合依赖倒置原则
修改前:
public SOQL with(SObjectField field) {
// ...
}
修改后:
public Queryable with(SObjectField field) {
// ...
}
SObjectField性能优化
在内部实现上,v5.0.0将字段名称的获取方式从:
field.getDescribe().getName()
优化为:
field.toString()
这一改动使得SObjectField
相关操作性能提升了约9倍。
向后兼容性说明
虽然v5.0.0引入了多项改进,但仍保持了良好的向后兼容性:
- 旧的Mock方法仍然可用,但推荐使用新的
SOQL.mock(...).thenReturn(...)
方式 - 如果代码中直接使用了
SOQL
类作为返回类型,需要修改为SOQL.Queryable
总结
SOQL Lib v5.0.0通过文档完善、Mock测试增强和代码优化,为Salesforce开发者提供了更强大、更可靠的SOQL查询解决方案。特别是新的Mockable接口和自动字段去除功能,大大提升了单元测试的可靠性和开发效率。代码架构的优化也为未来的功能扩展打下了坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考