2016-03-04 49 views
0

我正在嘗試爲我創建的新觸發器創建Salesforce單元測試。Salesforce Apex單元測試錯誤

trigger SOSCreateCaseCustom on SOSSession (before insert) { 
    List<Event> aplist = new List<Event>(); 
    List<SOSSession> sosSess = Trigger.new; 
    for (SOSSession s : sosSess) { 
     try { 
      Case caseToAdd = new Case(); 
      caseToAdd.Subject = 'SOS Video Chat'; 
      if (s.ContactId != null) { 
       caseToAdd.ContactId = s.ContactId; 
      } else { 
       List<Contact> contactInfo = [SELECT Id from Contact WHERE Email = :s.AppVersion]; 
       if (!contactInfo.isEmpty()) { 
        caseToAdd.ContactId = contactInfo[0].Id; 
        s.ContactId = contactInfo[0].Id; 
       } 
      } 
      insert caseToAdd; s.CaseId = caseToAdd.Id; 
     }catch(Exception e){} 
    } 
} 

這裏是我的單元測試:

@isTest 
private class SOSCreateCaseCustomTest { 
    static testMethod void validateSOSCreateCase() { 
     String caseSubject = 'SOS Video Chat'; 

     // set up case to add 
     SOSSession s = new SOSSession(); 
     insert s; 

     Case caseToAdd = new Case(Subject='SOS Video Chat'); 
     caseToAdd.ContactId = s.ContactId; 
     insert caseToAdd; 

     Case ca = [SELECT Subject, ContactId from Case where Subject =: caseSubject]; 
     // Test that escaltion trigger correctly escalate the question to a case 
     System.assertEquals(s.ContactId, ca.ContactId); 
    } 
} 

我不斷收到此錯誤。

System.QueryException: List has more than 1 row for assignment to SObject 

我是新來的Apex,我不知道如何解決這個問題。任何可以幫助的Salesforce和Apex專家?謝謝!

回答

0

我覺得這一個:

Case ca = [SELECT Subject, ContactId from Case where Subject =: caseSubject]; 

因爲casSubject可以查詢更多然後一個案例....你應該使用列表

+0

這其實不是問題,我從幫助解決了這個salesforce論壇。不管怎麼說,還是要謝謝你 – dannielum