我需要一些关于编写测试脚本的帮助,该脚本涵盖了足够的以下触发器,我已经设法在我的沙盒帐户上工作。 触发器是在特定类型的商机关闭时创建额外资产。触发似乎运行良好,但我真的不知道如何开始编写测试用例...为了这些机会关闭,帐户需要完成以下(我已经包含一些示例数据 - 它们是选择列表必须特异性金额):APEX触发器的Salesforce测试类
a.TurnoverBand__c = '<£10 million';
a.Joining_Fee__c = '£1,920';
a.Annual_Subscription__c = '£1,320';
触发如下:
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页面上的例子有点令人困惑。非常感谢。 –
在对您的测试示例进行快速浏览之后,我可以说您绝对需要浏览developer.force.com提供的教程和指南。 例如;你的测试代码没有assert语句,没有他们你确认你的代码没有未捕获的异常,但是你没有确认它是否按预期工作。在测试结束时您还会有不必要的DML删除语句,对测试代码中对象的更改不会提交给数据库。 –