Нужна помощь с написанием isTest для public static void createRecord (Product__c product){ с использованием assert
Первое что нужно, это создать и вставить в базу тестовые данные.
Это можно можон сделать один раз через @TestSetup.
Дальше создаем тестовые методы @IsTest под каждый из твоих реальных методов.
@istest
public class TestProduct {
@testSetup
static void setData() {
Product__c product = new Product__c();
product.Name = 'Test';
insert product;
}
@istest
static void getProducts() {
List<Product__c> products = ProductTableCmpController.getProducts();
System.assertEquals(products.Name, 'Test');
}
@istest
static void createRecord() {
Product__c product = new Product__c();
product.Name = 'TestNew';
ProductTableCmpController.createRecord(product);
List<Product__c> products = [SELECT Id, ImageURL__c, Name, Description__c, UnitPrice__c, UnitsAvailable__c
FROM Product__c
ORDER BY AddedDate__c DESC];
System.assertEquals(products.size(), 2);
}
}
Спасибо
Смотри, первое на что стоит обратить внмание.
Это что ты передаешь в метод. В реализации ты передаешь айди, в тестах имя.
Второй момент, на который я бы обратил внимание. Зачем селектить записи и потом их убирать.
если ты передаешь айди, просто создай запись продуктТейбл, поставь туда айди и удали. минус один запрос в базу.
В Вашей реализации запись не имеет айди, а его можно получить только вставить запись в базу. А хардкодить айди очень плохая практика, так что мы вставляем в базу, и удаляем запись из базы.
ProductTable__c product = new ProductTable__c(Name = 'Test');
insert product ;
ProductTableCmpController.deleteProductTable(product.Id);
delete product;