2013-07-08 7 views
1

트리거/테스트 클래스에서 작업 중이며 테스트 클래스를 작동시키는 방법을 알 수 없습니다. 방아쇠를 사용할 수있는 기회를 업데이트해야하지만, 방아쇠가 작동하는지 확인하는 방법과 방법을 잘 모르겠습니다.정점 트리거에 대한 테스트를 작성하려고합니다.

는 트리거 :

trigger add_primary_advisor on Opportunity(before update) { 
for(Opportunity o: Trigger.new){  

    if (o.IsClosed && !Trigger.oldMap.get(o.id).IsClosed) { 
     OpportunityContactRole contactRole = 
      [select ContactID from OpportunityContactRole where IsPrimary = true and OpportunityId = :o.id]; 
     if (contactRole != null) { 
     o.Primary_Advisor__c=contactRole.ContactID; 
     } 
    } 
    }  
} 

는 테스트 클래스 :

답변

0

시도 가기 전에 테스트 클래스에 대한 솔루션에 내가 최선의 관행이 아닌 루프에 대한 SOQL 쿼리를 가지고 있기 때문에 트리거가 생성되지 않았 음을 지적하고자한다.

opportunityContactRole 개체의 정확한 기능을 알지 못합니다. 연락처 개체 ID와 기회 ID를 보유 할 개체라고 가정합니다. 다소 더 많이 또는 덜 연결 개체와 비슷합니다.

@isTest 
private class primary_advisor_test { 
    static testMethod void primary_advisor(){ 
    //Create a contact that will be added to the opportunityCOntactRole. 
    contact con = new contact(name='testCon');// add all the required field as per your org settings 
    insert Con; 
    Opportunity opp = new Opportunity(Name='test opp', StageName='stage', Probability = 95, CloseDate=system.today()); 
    insert opp; 
    //Create the opporunityContactRole. 
    opportunityCOntactRole oppCOn = new new opportunityCOntactRole(OpportunityId=opp.id, contactId= con.Id, isPrimary=true); 
    insert oppCon; 
    //update the opportunity so that it is closed and enters the if conditon in your trigger. 
    opp.stageName='Closed'; 


    update opp; 

    } 
} 
0

이 문제는 업데이트를 호출하기 전에 어떤 필드를 변경하지 않았다되어

@isTest 
private class primary_advisor_test { 
    static testMethod void primary_advisor(){ 
    Opportunity opp = new Opportunity(Name='test opp', StageName='stage', Probability = 95, CloseDate=system.today()); 
    insert opp; 


update opp; 

} 

은}이

opp.Probability = 90; 
update opp; 
관련 문제