По-видимому, новая особенность релиза Apex в Salesforce.com Spring '12/v24.0 заключается в том, что модульные тесты больше не имеют доступа к "реальным" данным - таким образом (если я правильно понимаю изменения ) SOQL-запрос теперь будет извлекать только те объекты, которые были вставлены в течение unit test, и даже с некоторыми ограничениями.
Во всяком случае, это, кажется, бросает OpportunityLineItem, проверяя окно, потому что:
- Невозможно вставить OpportunityLineItem без PriceBookEntryId, НО
- Вы не можете вставить новую книгу ценников для продукта X, если у вас уже нет записи стандартной цены для продукта X, НО
- В тестовых данных нет стандартной книги цены, потому что таблица Pricebook2, как и все таблицы, фактически пуста в начале прогона unit-test, AND
- В Apex нет возможности создать стандартную книгу цены
Я действительно надеюсь, что у меня есть хотя бы один из этих четырех пунктов, но пока никаких изменений в моих существующих модульных тестах не показалось, что кто-то из них ошибается. Это, конечно, означает, что мои модульные тесты больше не работают. Это произошло буквально в одночасье - тесты прошли отлично в моей песочнице в пятницу, и теперь они терпят неудачу.
Мне что-то не хватает, или это ошибка в новой версии SFDC?