Я только что натолкнулся на это, и хотя ваш пост устарел, это первый результат в Google, поэтому я решил поделиться тем, что сделал.
Моя базовая архитектура - это тестовый класс, который вызывает вспомогательный класс для создания тестовых данных на лету (есть другие способы, это моя привычка).
Короткая версия:
- установить для всех данных значение true
- убедитесь, что книга стандартных цен активна
- добавить запись в книгу цен для стандартной книги цен - пометить как активную
- добавить запись в прайс-лист для вашей книги тестовых цен - пометить как активную
Тестовый класс:
@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;
}