Triggers 触发器的测试类

Triggers 触发器的测试类,triggers,salesforce,apex,Triggers,Salesforce,Apex,我刚刚编写了这个触发器,它在dev中似乎工作得很好,我需要将它转移到生产环境中,但是,我编写的测试类通过了测试,但没有涵盖触发器。任何帮助都将不胜感激。我在这里有点生疏。我知道我应该插入一个联系人(账户是一个req字段),然后更新联系人字段。我只是不知道该怎么做。多谢各位 trigger PropOwned on Contact(更新后){ 用于(联系人c:Trigger.new){ McLabs2__所有权__cownnew=新的McLabs2__所有权__c(); Contact oldCo

我刚刚编写了这个触发器,它在dev中似乎工作得很好,我需要将它转移到生产环境中,但是,我编写的测试类通过了测试,但没有涵盖触发器。任何帮助都将不胜感激。我在这里有点生疏。我知道我应该插入一个联系人(账户是一个req字段),然后更新联系人字段。我只是不知道该怎么做。多谢各位

trigger PropOwned on Contact(更新后){
用于(联系人c:Trigger.new){
McLabs2__所有权__cownnew=新的McLabs2__所有权__c();
Contact oldContact=Trigger.oldMap.get(c.id);
如果(c.One_Prop_Owned_c!=oldContact.One_Prop_Owned_c&&c.One_Prop_Owned_c!=null){
ownNew.McLabs2__联系人__c=c.id;
ownNew.McLabs2\uuuuu属性\uuuu c=c.One\u Prop\u Owned\uuuu c;
插入新的;
}
}
}
这是我写的测试类

@isTest
公共类所有权{
静态测试方法void createOwnership(){
McLabs2__所有权__cownnew=新的McLabs2__所有权__c();
ownNew.McLabs2__联系人__c='Michael Webb';
ownNew.McLabs2_uuuuProperty_uuuC='131 West 33 Street';
插入新的;
}
}

您的测试类只是创建了一个
McLabs2\uuuuuuuuuuuuuuuuuc
对象,并将该对象插入数据库中。由于将调用
McLabs2\uuuuu ownershion\uuuu c
(如果存在)上的此触发器,但您必须在
联系人
对象上测试触发器。因此,您需要插入一个帐户,然后更新它,因为您的联系人触发器在更新后的
模式下工作

所以,你需要这样的东西

@isTest
私有类所有权{
当ContactedUpdatedNewownershipsInserted()时,静态测试方法无效{
//创建联系人时,必须用适当的数据类型替换“value1”
联系人=新联系人(姓名='Test Contact',一个所有权='value1');
插入触点;
contact.One_Prop_Owned__c='value2';//必须用适当的数据类型替换value2
更新联系方式;
//在这里,您应该在数据库中只有一条McLabs2____________c记录,因为在测试上下文中真实数据是不可见的
列表所有权=[从McLabs2\uuuuuu所有权中选择Id、McLabs2\uuuuuuu联系人、McLabs2\uuuuuuuuu属性\uuuuu c];
System.assertEquals(1,ownerships.size());
System.assertEquals(contact.Id,ownerships[0].McLabs2\uu contact\uu c);
System.assertEquals(contact.One_Prop_Owned___c,ownerships[0].McLabs2___Property___c);
}
}
请阅读以下文章,这些文章可能对您非常有用:


  • 谢谢,我必须考虑一下,contact.One_Prop_Owned____c是一个查找字段,所以当我尝试在其中输入值或替换它时,它总是说这是一个无效id。我将同时读取这两个id,我已经读取了第一个id。感谢您的帮助完善我的问题,您回答了我的问题,测试课程成功,100%覆盖率!谢谢谢谢谢谢!!