我刚遇到这个,虽然你的帖子很旧,但这是谷歌上的第一个结果,所以我想我会分享我所做的。
我的基本架构是一个测试类,它调用一个实用程序类作为动态创建测试数据的一种方式(还有其他方式,这是我的习惯)。
简洁版本:
- 设置查看所有数据为真
- 确保标准价格手册处于活动状态
- 为标准价格手册添加价格手册条目 - 标记为活动
- 为您添加价格手册条目测试价格手册 - 标记为活动
测试类:
@isTest (seeAllData=true)
public with sharing class RMA_SelectLineItemsControllerTest {
static testmethod void testBasicObjects() {
Pricebook2 standard = [Select Id, Name, IsActive From Pricebook2 where IsStandard = true LIMIT 1];
if (!standard.isActive) {
standard.isActive = true;
update standard;
}
Pricebook2 pb = RMA_TestUtilities.createPricebook();
Product2 prod = RMA_TestUtilities.createProduct();
PricebookEntry pbe = RMA_TestUtilities.createPricebookEntry(standard,pb,prod);
}
}
实用程序方法如下所示(仅显示新 PBE 周围的内容):
public static PricebookEntry createPricebookEntry (Pricebook2 standard, Pricebook2 newPricebook, Product2 prod) {
System.debug('***** starting one');
PricebookEntry one = new PricebookEntry();
one.pricebook2Id = standard.id;
one.product2id = prod.id;
one.unitprice = 1249.0;
one.isactive = true;
insert one;
System.debug('***** one complete, ret next');
PricebookEntry ret = new PricebookEntry();
ret.pricebook2Id = newPricebook.id;
ret.product2id = prod.id;
ret.unitprice = 1250.0;
ret.isactive = true;
insert ret;
return ret;
}