有人能给我解释一下如何为下面这样的apex触发器编写测试类吗?
trigger LeadAssignmentTrigger on Broker__c (before insert,before update)
{
List<Broker__c > leadsToUpdate = new List<Broker__c >();
for (Broker__c broker: Trigger.new)
{
if (broker.Referral_ID__c!= NULL)
{
String str = broker.Referral_ID__c;
Integer ln = str.Length();
String likeStr = '%'+str.subString(ln-10, ln-7)+'%'+str.subString(ln-7, ln-4) +'%'+ str.subString(ln-4);
// Find the sales rep for the current zip code
List<User> zip = [select Id from User
where MobilePhone Like : likeStr];
// if you found one
if (zip.size() > 0)
{
//assign the lead owner to the zip code owner
broker.OwnerId = zip[0].Id;
leadsToUpdate.add(broker);
}
else
{
// Throw Error
broker.addError('Invalid Referrel ID');
}
}
}
}
我是Salesforce的新手。有人帮助我如何为上述触发器编写顶点类(测试类)吗?
@isTest
private class LeadAssignmentTriggerTest
{
static testMethod void validateHelloWorld()
{
User userObj = new User( Id = UserInfo.getUserId() );
userObj.MobilePhone = '5555555555';
update userObj
test.startTest();
try
{
Broker__c broker = new Broker__c();
broker.Referral_ID__c = '55555555';
broker.City ='New York';
// Add all required field here
insert broker;
}
Catch(Exception ee)
{
}
test.stopTest();
}
}
AccountBrowseExtensionTesttestAccountBrowseSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。AccountBrowseExtensionTest。testAccountBrowse:第20行第1列CloseActivityController测试CloseActivitySystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。关闭ActivityController测试。testCloseActivity:第13行第1列ChangeOwnerControllerTestChangeOwnerSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。ChangeOwnerController测试。testchangeOwner:第20行第1列CNTACTSClassTestTestCNTACTSSSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。cntactsclassTest。测试行为:第13行第1列LogacallControllerTestLogacallSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。LogACallControllerTest。testLogACall:第14行第1列RedirectControllerTesttestRedirectSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,City是必需的:[]堆栈跟踪:Class。重定向控制器测试。testRedirect:第20行第1列TestAccountSharetestSystem。DmlException:插入失败。第0行第一个异常;第一个错误:FIELD\u CUSTOM\u VALIDATION\u EXCEPTION,固定约会后必须输入手机号码:[]堆栈跟踪:类。TestAccountShare。测试:第40行第1列
您正在为插入前的Broker\uu c和更新前的Broker\uU c编写触发器
因此,由于它是一个触发器,所以每次插入或更新记录时,代码都会运行。
要编写测试类,只需创建两种测试方法:
在此处查看如何创建测试类
顺便说一下,您应该在此处查看有关如何编写更好的触发器和处理程序的最佳编码实践
编辑:还应该删除循环内的SOQL,并在for循环外创建查询映射
我已在Salesforce APEX中记录了触发器。它工作正常。 触发器代码为: 现在我正在尝试为它的测试类编写代码。它在线上给出错误,说对象无法解析为字符串。 测试等级代码为: 期待找到解决方案。任何帮助都将不胜感激。 谢谢
我创建了一个触发器,它调用future类对第三方url进行http调用,这里一切正常,但测试类没有覆盖opportunity字段IsWon //Apex触发器 //具有future方法的触发器的future类 //我被卡住的触发器的测试类:-
我在Apex中有一个触发器。如何编写检查触发器是否被调用的单元测试?
tl;dr-在继续测试之前,如何使测试类等待特定触发器完成其更新或插入? 出身背景 我有一个触发器,每当创建帐户对象时都会创建一个新的对象,然后将这两条记录相互关联(请参阅下面的帐户触发器)。 我还在Portal\u Content\u c对象上创建了一个触发器,在删除记录时触发该触发器。删除时,触发器会查找相关的帐户记录并将其删除(请参见下面的门户内容触发器)。 我的问题是关于我的门户内容测试类
我已经为此发疯了。我的IF循环中没有任何东西通过我的测试类触发,我不知道为什么。我在网上阅读了很多,看起来我做的事情是正确的,但它仍然没有解决我的代码覆盖率。这是运行的最后一行:如果(isIn==True){ 之后我无法让任何东西在IF循环中运行,我已经颠倒了逻辑,它仍然无法运行。我觉得当有人指出它时,我会踢自己,但这是我的代码: } 这是我的测试类:
代码本身没有给出任何错误,但每当我运行它时,Trailhead都会给我以下消息: “挑战尚未完成……问题是:执行触发器没有按预期工作。” 以下是说明: 对于此质询,您需要创建一个触发器,在插入或更新之前检查复选框。如果复选框字段为true,则会将发货邮政编码(其API名称为ShippingPostalCode)设置为与帐单邮政编码(BillingPostalCode)相同。 Apex触发器必须调用