testing - 如何使用断言方法为顶点触发器编写测试?
问题描述
如何使用断言方法为顶点触发器编写测试?
这是我的代码:
trigger ProductTrigger on Product__c (before insert, before update) {
Schema.DescribeFieldResult F = Product__c.Description__c.getDescribe();
Integer lengthOfField = F.getLength();
List<Product__c> prList = new list<Product__c>();
for(Product__c pr: trigger.new){
pr.AddedDate__c=system.today();
if (String.isNotEmpty(pr.Description__c)) {
pr.Description__c = pr.Description__c.abbreviate(lengthOfField);
}
}
}
解决方案
您可以像测试普通逻辑类一样测试触发器。只需创建一个新的测试类,然后在您的测试类中创建一个新产品,插入它,查询它,并验证您希望触发器更改的字段是否已更新。
在 StartTest()/StopTest() 中调用插入语句可确保触发逻辑在评估断言之前完成。
您可以以相同的方式测试更新逻辑,还可以测试插入和更新对象列表。
@isTest
public class Test_ProductTrigger {
@isTest
static void test_getNewApp()
{
Product__c product = Product__c();
product.yourFieldToTest = 'someValue';
Test.startTest();
insert products;
Test.stopTest();
Product__c newProduct = [SELECT yourFieldToTest FROM Product WHERE Id = product.Id LIMIT 1];
system.assert('yourExpectedValue' == newProduct.yourFieldToTest);
// You can also use system.assertEquals to do the same test
system.assertEquals('yourExpectedValue', newProduct.yourFieldToTest);
}
}
推荐阅读
- css - 在 Vue.js 中使用 CSS 用省略号截断文本不起作用
- javascript - 节点:请求内部的请求内部循环
- ios - simctl | fbsimctl : 如果在关机命令后启动模拟器变得无响应
- c++ - Qt catch shift + 3 一键按下
- amazon-web-services - AWS SSM 策略不像文档那样工作
- python-3.x - ModuleNotFoundError:没有名为“_pydevd_bundle”的模块
- serialization - Kotlin 数据类使用 GSON 动态创建其字段的 json
- python - ValueError:预期的 2D 或 3D 输入(获得 1D 输入)PyTorch
- c# - .net 标准 1.3 项目中的 log4net 配置
- database - 对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例(JPA-Hibernate)