2012-05-25 32 views
0

編寫testMethod時,我無法檢索相關聯繫人字段。在下面的例子中,我期望最終的assert返回true。我正在測試的代碼工作正常,select僅在測試上下文中失敗。Salesforce APEX - 測試環境對相關對象返回null

爲什麼從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 
} 

回答

2

我認爲問題可能是您將機會與客戶記錄相關聯的方式。你有X1st_Client__r =客戶端,我想你可能真的想要做的是X1st_Client__c = client.Id。我不認爲插入DML會考慮X1st_Client__r中表示的對象。我認爲它只會在插入時注意X1st_Client__c值。

+0

是的,這將做到這一點。我真的很驚訝,它甚至編譯爲。 –