2016-03-04 48 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