2012-05-25 2 views
0

testMethod를 작성할 때 관련 연락처 필드를 검색 할 수 없습니다. 아래 예제에서 나는 final 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 = client가 있고 실제로하고 싶은 것이 X1st_Client__c = client.Id라고 생각합니다. 삽입 DML이 X1st_Client__r에 표시된 개체를 고려하지 않을 것이라고 생각합니다. 삽입하는 동안 X1st_Client__c 값에만주의를 기울일 것입니다.

+0

그래, 그럴 것이다. 나는 실제로 컴파일 된 것으로 놀랐다. –