【发布时间】:2014-08-08 10:47:49
【问题描述】:
我有一个在沙盒中工作的触发器。工作流检查活动级别中的字段并将其与自定义设置进行比较。如果匹配,则将目标返回到 DS 乘数字段。触发器如下所示
trigger PopulateTarget on Campaign (before insert, before update)
{
for(Campaign campaign : Trigger.new)
{
if (String.isNotBlank(campaign.Apex_Calculator__c) == true)
{
DSTargets__c targetInstance = DSTargets__c.getInstance(campaign.Apex_Calculator__c);
{
String target = targetInstance .Target__c;
campaign.DS_Target_Multiplier__c = Target;
}
}
}
}
但是,我无法为此编写适当的测试,并在互联网上寻求帮助。我收到了测试
@isTest
private class testPopulateTarget{
static testMethod void testMethod1(){
// Load the Custom Settings
DSTargets__c testSetting = new DSTargets__c(Name='Africa - 10 Weeks; CW 10',Target__c='0.1538', SetupOwnerId = apexCalculatorUserId);
insert testSetting;
// Create Campaign. Since it would execute trigger, put it in start and stoptests
Test.startTest();
Campaign testCamp = new Campaign();
// populate all reqd. fields.
testCamp.Name = 'test DS campaign';
testCamp.RecordTypeId = '012200000001b3v';
testCamp.Started_Campaign_weeks_before_Event__c = '12 Weeks';
testCamp.ParentId= '701g0000000EZRk';
insert testCamp;
Test.stopTest();
testCamp = [Select ID,Apex_Calculator__c,DS_Target_Multiplier__c from Campaign where Id = :testCamp.Id];
system.assertEquals(testCamp.DS_Target_Multiplier__c,testSetting.Target__c);// assert that target is populated right
}
}
此类测试返回错误“编译错误:变量不存在:apexCalculatorUserId 在第 6 行第 122 列”。如果我删除 ApexCalculator 部分 System.assertEquals 则测试通过。但是它涵盖了代码的 4/6 部分(即 66%)
谁能帮助我如何修改代码以使覆盖率达到 75%?
【问题讨论】:
标签: triggers salesforce apex