显然,Salesforce.com 中 Apex 的 Spring '12/v24.0 版本的一个新功能是单元测试不再能够访问“真实”数据 - 因此(如果我正确理解了更改) SOQL 查询现在将仅检索在单元测试过程中插入的对象 - 即使这也受到一些限制。
无论如何,这似乎将 OpportunityLineItem 测试排除在外,因为:
- 无法插入没有 PriceBookEntryId 的 OpportunityLineItem,但是
- 除非您已经有产品 X 的标准价格手册条目,否则您无法为产品 X 插入新的价格手册条目,但是
- 测试数据中没有标准价格手册,因为与所有表一样,Pricebook2 表在单元测试运行开始时实际上是空的,并且
- 无法在 Apex 中创建标准价格表
我真的希望这四点中至少有一点是错误的,但到目前为止,我现有的单元测试没有任何变化表明它们中的任何一个是错误的。这当然意味着我的单元测试不再有效。这几乎是在一夜之间发生的——周五的测试在我的沙箱中运行良好,但现在失败了。
我是否遗漏了什么,或者这是新 SFDC 版本中的错误?
最佳答案
Summer 14 引入了新功能,您现在可以使用 Test.getStandardPricebookId()
无需设置 SeeAllData
即可获取标准价目表 ID至True
。
关于salesforce - 在 Apex v24.0 中对 OpportunityLineItem 进行单元测试时,如何避免 STANDARD_PRICE_NOT_DEFINED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164986/