Мой тест не работает на 23%, по какой-то причине не работает весь раздел, и я не знаю, почему, может кто-нибудь помочь? Неудачная часть — это все, начиная с public PageReference send() и ниже. Вот мой код класса (выделение неудачной части):

public without sharing class requnl_class
{
    private ApexPages.StandardController standardController;
    public String recId {get; set;}


    public requnl_class(ApexPages.StandardController standardController)
    {
        recId = ApexPages.CurrentPage().getparameters().get('id');  
    }


    public PageReference send() {

        Messaging.singleEmailmessage email = new Messaging.singleEmailmessage();

        patient_chart__c PatientId = [SELECT Id FROM patient_chart__c WHERE ID =:recid Limit 1]; 

        List<string>sendTo = new List<String>();

        sendTo.add('support@restorehair.com'); 

        email.setToAddresses(sendTo);

        email.setSubject('Please unlock this patient chart.'); 

        email.setHtmlBody('Please unlock cs28.salesforce.com/'+PatientId.Id);

        Messaging.sendEmailResult[] r = Messaging.sendEmail(new Messaging.singleEmailmessage[] {email});

        return null;
    }
}

А вот мой тестовый код:

@istest (seeAllData = True) private class requnl_class_test  {

    @isTest static void requnl_class_test () {
        Patient_Details__c client = new Patient_Details__c(
            Patient_name__c='Donkey Kong',
            Email_Address__c='tom@tom.com',
            Phone_number3__c='2012012233'
        );
        insert client;
        Patient_chart__c chart= new Patient_chart__c (
            RESTORE_Client__c=client.Id,
            name='sard'
        );
        insert chart;

        ApexPages.currentPage().getParameters().put('id',chart.id);
        ApexPages.StandardController stdController = new ApexPages.StandardController(chart);

        requnl_class consext  = new requnl_class(stdController);

        PageReference pageRef = Page.Request_Unlock;

        test.setCurrentPage(pageRef);

    }
}
-1
Edward Sobotka 28 Авг 2019 в 16:45
6
Использование seeAllData=true обычно является плохим признаком. Лучше всего создавать все данные, необходимые для теста, в самом тестовом классе. Модульное тестирование — очень распространенная тема, поэтому я рекомендую ознакомиться с canonical-qa. тег, чтобы увидеть, поможет ли это ответить на ваш вопрос.
 – 
Derek F
28 Авг 2019 в 16:44

1 ответ

Лучший ответ

Вы не вызываете метод send() в тестовом классе. Добавьте следующую строку в свой тест.

consext.send();

С другой стороны, ваш тест выглядит не очень хорошо, во-первых, вы используете seeAllData=true, что не является хорошей практикой.

Кроме того, лучше удалить адрес электронной почты вашего клиента из кода.

0
oozkan 28 Авг 2019 в 17:19
Спасибо за ваш вклад, я уберу seealldata, когда добавлю .send(); казалось, что это не нравится, и это дало мне 14 ошибок в консоли разработчика, не знаю почему. У вас есть понимание?
 – 
Edward Sobotka
28 Авг 2019 в 17:37
Неважно, я только что понял, что должен добавить эту строку независимо от других строк кода, после этого она заработала.
 – 
Edward Sobotka
28 Авг 2019 в 17:40