Как избежать STANDARD_PRICE_NOT_DEFINED при модульном тестировании OpportunityLineItem в Apex v24.0?

По-видимому, новой особенностью релиза Spring '12 / v24.0 Apex в Salesforce.com является то, что модульные тесты больше не имеют доступа к "реальным" данным - таким образом (если я правильно понимаю изменение) SOQL-запрос теперь будет получать только те объекты, которые были вставлены во время проведения модульного теста - и даже на это накладываются некоторые ограничения.

Во всяком случае, это, похоже, выбрасывает тестирование OpportunityLineItem в окно, потому что:

  • Невозможно вставить OpportunityLineItem без PriceBookEntryId, НО
  • Вы не можете вставить новую запись прайс-бука для продукта X, если у вас уже нет записи стандартного прайс-бука для продукта X, НО
  • В тестовых данных нет стандартного прайс-бука, потому что таблица Pricebook2, как и все таблицы, фактически пуста в начале выполнения модульного теста, И
  • В Apex нет способа создать стандартную книгу цен

Я очень надеюсь, что я ошибся хотя бы в одном из этих четырех пунктов, но до сих пор ни одна из вариаций моих существующих модульных тестов не показала, что они ошибочны. Что, конечно, означает, что мои модульные тесты больше не работают. Это произошло буквально за ночь - в пятницу тесты работали нормально в моей песочнице, а теперь они не работают.

Я что-то упустил, или это ошибка в новом выпуске SFDC?

20
задан Ben Dunlap 6 February 2012 в 18:11
поделиться