You need to sign in to do that
Don't have an account?

System.QueryException: List has no rows for assignment to SObject.
Hi All,
I'm trying to write a unit test for a trigger test and getting the following error message:
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, InsertCaseTrigger: execution of BeforeInsert caused by: System.QueryException: List has no rows for assignment to SObject.
When I use @isTest(SeeAllData=true), i dont see any error messages, but code is not covered 75%. Why this is heppening ?
Can some one help me please.
Trigger:
trigger updateCaseSummary on Case(after insert) {
List<Account> accList = new List<Account>();
set<Id> accIds = new set<Id>();
for(Case cs : Trigger.new){
accIds.add(cs.AccountId);
}
accList = [ select CaseNum__c from Account where Id in : accIds];
if(accList.size() > 0) {
for(Account ac: accList){
if( ac.CaseNum__c == null)
ac.CaseNum__c = 0;
ac.CaseNum__c = ac.CaseNum__c + 1;
}
update accList;
}
Test Class:
@isTest
private class updateCaseSummaryTest{
static testMethod void SummaryTest(){
Account acc = New Account(Name = 'TestAccount',CaseNum__c = 1);
insert acc;
Case cs = New Case(AccountId = acc.Id);
insert cs;
Account acc2 = New Account(Name = 'TestAccount2',CaseNum__c =null);
insert acc2;
Case cs2 = New Case(AccountId = acc2.Id);
insert cs2;
}
}
Thanks a ton in advance!
This looks like an error being thrown from a different trigger - the error mentions BeforeInsert, which could be on account or case.
This error usually means that the code is expecting exactly one item, something like:
But because the real data can't be seen, there are no matching rows returned.
Thanks for the reply.
Befor Select query write the condition
if(accIds.size() > 0)
{
accList = [ select CaseNum__c from Account where Id in: accIds];
}
Thank you
Thank you for the response.
I'm getting error in the test class only. Trigger is working as expected.