Я пытаюсь узнать о тестовых классах вершины, я прикрепил приведенный ниже код. Я не могу выполнить это в рабочей консоли разработчика, но отлично работает в моей песочнице. Меня попросили написать @isTest, это действительно необходимо? не могу ли я просто отправить код вершины в производство через набор изменений и просто выполнить его? Поступая так, я ничего не испорчу в производстве? Это одноразовая вещь, я должен обновить определенный флажок во всех записях. Пожалуйста, совет, пожалуйста, не голосуйте против, если вы сочтете этот вопрос бесполезным, дайте мне знать заранее, и я его уберу. Спасибо.

public class SecondAttemptTrigger {
    public void TriggerMethod(){
        List<Exam__c> objects = [
            SELECT Name, Exam_state__c, doNothingExam__c
            FROM Exam__c
            WHERE Exam_state__c = 'Active' OR Exam_state__c ='Failed'];

        for(Exam__c e : objects){
            if(e.Exam_state__c == 'Active' || e.Exam_state__c == 'Failed') {  
                e.doNothingExam__c = True;
            } 
        }
        update objects;
    }
}
0
Niveth Kumar 2 Апр 2019 в 08:27

2 ответа

Лучший ответ

Меня попросили написать @isTest, это действительно необходимо?

Да.

не могу ли я просто отправить код вершины в производство через набор изменений и просто выполнить его?

Не без покрытия кода.

Поступая так, я ничего не испорчу в производстве?

Это может потенциально вызвать проблемы. Это цель модульного теста: убедиться, что ваши изменения не повредят рабочей среде.

Я не уверен, что смогу подчеркнуть это достаточно, но:

⚠️ НЕ РАЗВЕРТЫВАЙТЕ НЕПРОВЕРЕННЫЙ КОД В ПРОДУКЦИЮ ⚠️

Это невероятно важно. Вы можете поставить весь свой бизнес на колени с помощью одной строки кода. Вы хотите быть этим человеком? Нет, я так не думал.

Это одноразовая вещь, я должен обновить определенный флажок во всех записях.

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

List<Exam__c> objects = [
    SELECT Id
    FROM Exam__c
    WHERE Exam_state__c in ( 'Active','Failed' )];

for(Exam__c e : objects){
    e.doNothingExam__c = True;
}
update objects;

Чтобы выполнить это, нажмите «Ваше имя»> «Консоль разработчика»> «Отладка»> «Открыть анонимное окно выполнения», введите код и нажмите кнопку «Выполнить».

Обратите внимание, что если у вас более 10 000 записей, этот код не будет работать, поэтому вам может потребоваться выполнить дополнительную работу.

2
sfdcfox 27 Ноя 2018 в 10:09
У меня есть 1738 записей, но я получаю эту ошибку <Строка: 7, Столбец: 7 Переменная не существует: doNothingExam__c> List объекты = [ВЫБЕРИТЕ имя ИЗ Exam__c ГДЕ Exam_state__c в ('Активный','Неудачный') ]; for(Exam__c e: объекты){ e.doNothingExam__c = True; } обновить объекты;
 – 
Niveth Kumar
27 Ноя 2018 в 11:24
У меня явно есть переменная doNothingExam__c. Почему это проблема?
 – 
Niveth Kumar
27 Ноя 2018 в 11:33
Я решил это, флажок был скрыт и не виден. это было причиной
 – 
Niveth Kumar
27 Ноя 2018 в 12:56

Да, тестовые классы необходимы не только перед отправкой ваших классов в производство, но и являются обязательными и серьезной частью разработки APEX.

Здесь вы можете найти информацию о как начать создавать свои тестовые классы.

1
Carlos Naranjo 27 Ноя 2018 в 10:51
Спасибо за ваш комментарий. Я новичок в APEX, и я уже пробовал пройти по этой ссылке. Но не могу понять, как я должен создать его. В моем случае мне нужно создать объект экзамена и добавить определенные значения и т. д., что-то в этом роде?
 – 
Niveth Kumar
27 Ноя 2018 в 10:09