我正在尝试测试系统保护字段的类覆盖范围,以测试代码覆盖范围。
Salesforce提供了解决方案here。
不允许我设置动态日期,因此也有触发器,即使我使用test.setStartDate()
,修改日期也会生效。
答案 0 :(得分:1)
Here是一个有用的链接,可能对您有用
以下代码用于设置系统保护字段测试代码覆盖率, 从这里我们知道,我们可以设置创建日期字段,那么最后修改的日期呢?
回答如下: 用例是如果我们在最后修改日期(例如,
)中使用带有过滤条件的SOQL SELECT Id,Name FROM Lead WHERE DAY_ONLY(lastmodifieddate)=today and
HOUR_IN_DAY(lastmodifieddate)>4 and HOUR_IN_DAY(lastmodifieddate)<15
我们可以看到我正在查询今天修改的记录,时间在4到15(格林尼治标准时间)之间,并且需要今天和特定时间段内的动态测试数据。 然后,如何解决这个问题,使用往返序列化进行bam。
Lead l= new Lead();
l.lastName='test';
l.Status='New';
l.Company='test';
Date myDate = Date.today();
Time myTime = Time.newInstance(8, 0, 0, 0);
DateTime dt1 = DateTime.newInstanceGMT(myDate, myTime);
l.CreatedDate=dt1;
l.LastModifiedDate=dt1;
//I am serializing the sobject to string.
string leadJSON=JSON.serialize(l);
//I am De-serializing the string back to sobject
Lead ll = (Lead) JSON.deserialize(leadJSON, Lead.class );
//In this way it will accept the dynamic dates we specify for system date fields.
insert ll;
//Remember this is for test class purpose only.