Мне нужна помощь в написании тестового скрипта, который охватывает достаточно триггера, который мне удалось получить в моей учетной записи Sandbox. Триггер - это создание дополнительных активов при закрытии определенных типов возможностей. Кажется, что Trigger работает нормально, но я действительно не знаю, как начать писать тестовые примеры ... Для того, чтобы эти возможности были закрыты, Учетная запись должна иметь следующие завершенные (я включил некоторые примеры данных - они являются выборками, поэтому должны быть specif суммы):Класс тестирования Salesforce для триггера APEX
a.TurnoverBand__c = '<£10 million';
a.Joining_Fee__c = '£1,920';
a.Annual_Subscription__c = '£1,320';
Trigger следующим образом:
trigger CreateInclusiveAssetonMembershipWon on Opportunity (after insert, after update)
{
for(Opportunity o: trigger.new)
{
if(o.isWon == true && o.HasOpportunityLineItem == true && (o.Type == 'A Membership' || o.Type == 'AB Membership' || o.Type == 'A Membership Upgrade' || o.Type == 'AB Membership Upgrade'))
{
String opptyId = o.Id;
Asset[] ast = new Asset[]{};
Asset a = new Asset();
{
a = new Asset();
a.AccountId = o.AccountId;
a.Product2Id = '01tA0000003N1pW';
a.Quantity = o.Inclusive_Training_Spaces_Allocated__c;
a.Price = 300;
a.PurchaseDate = o.CloseDate;
a.Status = 'Purchased';
a.Description = 'Allocated Spaces';
a.Name = 'Membership Inclusive Training';
ast.add(a);
}
insert ast;
}
}
}
Если кто-то может помочь мне в этом я был бы признателен!
Благодаря
тест ETA сценарий для этого триггера до сих пор:
@isTest
private class TrngAstOppTrigTestSuite {
static testMethod void verifyBehaviorOnInsert_positive() {
Account a = new Account();
a.Name = 'New Test Account';
a.Account_Email__c = '[email protected]';
a.TurnoverBand__c = '<£10 million';
a.Joining_Fee__c = '£1,920';
a.Annual_Subscription__c = '£1,320';
insert a;
Opportunity o = new Opportunity();
OpportunityLineItem ol = new OpportunityLineItem();
PricebookEntry pbID = [select ID from PricebookEntry];
o.AccountId = a.Id;
o.Name = 'test';
o.Type = 'A Membership';
o.StageName = 'Needs Analysis';
o.CloseDate = date.today();
insert o;
ol.OpportunityId = o.Id;
ol.Quantity = 1;
ol.UnitPrice = 2.00;
ol.PricebookEntryId = pbID.Id;
insert ol;
o.StageName= 'Closed Won';
update o;
delete ol;
delete o;
}
}
Если кто-то может сказать, если я иду в правильном направлении, с этим я был бы признателен. Попытка сгладить ошибки, но, очевидно, нет смысла, если это не сработает. Благодаря
Спасибо за быстрый ответ! Теперь я изменил свой код триггера и не буду включать DML в циклы с этого момента ... Что касается тестирования, я получил следующее: может ли кто-нибудь сказать, если я пойду в правильном направлении? Я нашел пример на странице DeveloperForce несколько запутанным. Большое спасибо. –
Если вы быстро взглянете на свой тестовый пример, я могу сказать, что вам обязательно нужно пройти через учебные пособия и руководства, предоставленные разработчиком.force.com. Например, ваш тестовый код не имеет утверждений assert, без них вы подтверждаете, что ваш код не имеет исключенных исключений, но вы не подтверждаете, что он работает должным образом. У вас также есть ненужные операторы удаления DML в конце теста, изменения объектов в тестовом коде никогда не передаются в базу данных. –