Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Salesforce APEX-测试上下文为相关对象返回null_Unit Testing_Salesforce_Apex Code_Soql - Fatal编程技术网

Unit testing Salesforce APEX-测试上下文为相关对象返回null

Unit testing Salesforce APEX-测试上下文为相关对象返回null,unit-testing,salesforce,apex-code,soql,Unit Testing,Salesforce,Apex Code,Soql,编写testMethod时,我无法检索相关的联系人字段。在下面的示例中,我希望最终断言返回true。我正在测试的代码运行良好,select仅在测试上下文中失败 为什么SOQL查询没有返回联系人信息 static testMethod void FailTest() { Contact client = new Contact(FirstName='TestFirst1', LastName='TestFirst', BirthDate = Date.parse('01/01/19

编写testMethod时,我无法检索相关的联系人字段。在下面的示例中,我希望最终断言返回true。我正在测试的代码运行良好,select仅在测试上下文中失败

为什么SOQL查询没有返回联系人信息

static testMethod void FailTest()
{
        Contact client = new Contact(FirstName='TestFirst1', LastName='TestFirst', BirthDate = Date.parse('01/01/1986'), Gender__c = 'Male');
        insert client;
        Opportunity opp = new Opportunity(Name = 'Test Opp' + Math.random(), CloseDate=Date.Today(), StageName='ASR - Case Design', Product_Types__c='UL', Face_Amount_Applied_For__c=500, Estimated_Target_Premium__c=1000, X1st_Client__r = client);
        insert opp;

        Opportunity selectOpp = [Select o.X1st_Client__r.LastName From Opportunity o WHERE o.Id = :opp.Id LIMIT 1];

        system.assertNotEquals(opp.X1st_Client__r.LastName, null); //true
        system.assertNotEquals(opp.Name, null); //true
        system.assertNotEquals(selectOpp.Name, null); //true
        system.assertNotEquals(selectOpp.X1st_Client__r.LastName, null); //false, should be true
}

我认为问题可能在于您将机会与客户记录关联的方式。您有X1st_Client\uu r=Client,我认为您可能真正想要做的是X1st_Client\uu c=Client.Id。我认为insert DML不会考虑X1st_Client_r中表示的对象。我认为,在插入过程中,它只会关注X1st_Client___c值

是的,那就行了。事实上,我很惊讶它竟然按原样编译。