Salesforce 在单元测试期间,测试类中的Assert语句失败

Salesforce 在单元测试期间,测试类中的Assert语句失败,salesforce,code-coverage,test-class,Salesforce,Code Coverage,Test Class,逻辑: publicstaticvoid wmgRemoveOldGroupQueue(Map newMap,Map oldMap){ 字符串wmgRecordTypeId=Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('WMG_Operations_Workflow').getRecordTypeId(); 对于(案例o:newMap.values()){ 调试('o.OwnerId='+o.OwnerId+'

逻辑:

publicstaticvoid wmgRemoveOldGroupQueue(Map newMap,Map oldMap){
字符串wmgRecordTypeId=Schema.SObjectType.Case.getRecordTypeInfosByDeveloperName().get('WMG_Operations_Workflow').getRecordTypeId();
对于(案例o:newMap.values()){
调试('o.OwnerId='+o.OwnerId+'oldMap.get(o.Id.OwnerId='+oldMap.get(o.Id.OwnerId));
系统调试('o.RecordTypeId'+o.RecordTypeId+'wmgRecordTypeId'+wmgRecordTypeId');
if(o.RecordTypeId==wmgRecordTypeId&!((字符串)o.OwnerId).startsWith('005'))&&
(o.OwnerId!=oldMap.get(o.Id.OwnerId)){
o、 ANN_从_队列_uuC=''接受了_;
}
系统调试('o.ANN\u从队列中接受\u c'+o.ANN\u从队列中接受\u c';
}
}
这行不通

当您有一个内存记录(比如您的案例)并插入它时,只有生成的记录的ID会“神奇地”发送回代码。无论记录发生了什么变化(由触发代码、工作流、流、流程生成器、公式字段等引起的更改),您都不会立即在记录中看到它

您必须进行查询才能看到新的值(对于公式来说,有一个很好的技巧,但其他一切—您必须进行查询)


制作类似于
Case newCase=[选择OwnerId,ANN_Accepted_From_Queue__c From Case WHERE Id=:c.Id]并查看它是否具有您想要的值。

不,我正在努力通过此单元测试!!我假设这是从触发器调用的。您能否验证该方法实际上是从触发器调用的,并且是在触发器定义的上下文中调用的?即更新前、更新后等。是,这是从更新前触发器调用的:我的单元测试无法进入条件:o.OwnerId!=oldMap.get(o.Id).OwnerId…..请帮助我,因为我需要尽快完成单元测试。我面临的主要问题是无法从oldMap和NewMap中获取所有者Id更新之间的差异仍然没有解决方案!!您好:所以我应该遵循的方法是在插入后查询记录,然后进行更新。。。对吗?当你的触发码触发时?看起来像是“更新前”?插入案例、更改所有者、更新、查询新案例值并在新案例上运行assert,应该可以。谢谢,我将尝试:)但有问题…当我检查代码覆盖率时,我的测试类没有进入条件:(o.OwnerId!=oldMap.get(o.Id).OwnerId),因此,我猜不在特定字段中设置空白值:ANNYApReTeTyFas.QueQueLay'C='';我在测试课上有什么不对劲吗?不是这样工作的:(