0

testMethod を作成するときに、関連する連絡先フィールドを取得できません。以下の例では、最終アサートが true を返すことを期待しています。私がテストしているコードは正常に動作しますが、選択はテスト コンテキストでのみ失敗します。

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
}
4

1 に答える 1

2

問題は、商談をクライアント レコードに関連付ける方法にある可能性があると思います。X1st_Client__r = client があり、本当にやりたいことは X1st_Client__c = client.Id だと思います。挿入 DML が X1st_Client__r で表されるオブジェクトを考慮に入れるとは思わない。挿入中は X1st_Client__c の値にのみ注意を払うと思います。

于 2012-05-25T18:47:40.393 に答える