Ошибка в журналах тестирования apex: common.apex.runtime.impl.ExecutionException: в списке нет строк для назначения SObject " - PullRequest
0 голосов
/ 20 марта 2019

Вот что я попробовал. Я думаю, что проблема где-то в тестовом классе, когда я создаю тестовый контроллер apex, и я хочу связать запись контроллера с решением, которое я создал в тестовом классе.

Это ошибка, которую я нашел в журналах: "common.apex.runtime.impl.ExecutionException: в списке нет строк для назначения SObject" | 0x4888dd3c

apex class:

public with sharing class SolutionWrapper {
public ApexPages.StandardSetController controller;
public Opportunity opp{get; set;}
public Solutions__c oppId{get; set;}
public Solutions__c sol{get; set;}
public Solutions__c solution{get; set;}
public Account acc{get; set;}

public SolutionWrapper(ApexPages.StandardSetController controller) {
    try{
        solution = new Solutions__c();
        solution = (Solutions__c)controller.getRecord();
        if(solution.Id != null){
            oppId = [SELECT id, Solutions__c.Opportunity__c 
                FROM Solutions__c
            WHERE id =: solution.Id
            LIMIT 1];

            opp = [Select id,Name, AccountId, CurrencyIsoCode  from 
                     Opportunity where id =: oppId.Opportunity__c  LIMIT:1];
        }

        if(opp.id !=null){
            sol = [SELECT id,Name, Mail_Merge_Id__c,Solution_Country__c, Solutions__c.Opportunity__c 
        FROM Solutions__c
        WHERE Solutions__c.Opportunity__c =: opp.id
        LIMIT 1];
             acc = [Select id,Name,Country__c from 
                     Account where id=:opp.AccountId LIMIT: 1];
        }


    }
    catch(Exception e){
        ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.ERROR,e.getMessage()));
    }

}

}

Вот мой тестовый класс

апекс тестовый класс:

@isTest 
public class SolutionWrapperTest {

     static testMethod void testMethodOpp(){
         Account acc = new Account(Name='test', Country__c='test'); 
          insert acc; 
         Opportunity opp = new Opportunity(Name='test', AccountId=acc.id, CurrencyIsoCode='GBP', StageName = 'Good',
          CloseDate =  date.today());
         insert opp;
         Solutions__c sol = new Solutions__c( Opportunity__c= opp.id, CurrencyIsoCode='GBP');       
           insert sol;          

         List<Solutions__c> listSol = new List<Solutions__c>();
         listSol.add(sol);
         PageReference pageRef = Page.NewVisualForcePage;
         Test.setCurrentPage(pageRef); 

        Test.startTest();
         ApexPages.StandardSetController stdController = new ApexPages.StandardSetController(listSol);
         SolutionWrapper testSolution = new SolutionWrapper(stdController);
        Test.stopTest();

        }


}

1 Ответ

0 голосов
/ 21 марта 2019

Идентификатор решения отличается от того, который я вставил в тестовый класс.Я вставил фиктивное значение (например, «тест») в поле, как валюта.После этого я выбрал в БД на основе валюты вместо идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...