如何在Salesforce中对“上次修改”日期执行测试类覆盖?

时间:2018-08-24 14:05:29

标签: unit-testing salesforce code-coverage

我正在尝试测试系统保护字段的类覆盖范围,以测试代码覆盖范围。

Salesforce提供了解决方案here

不允许我设置动态日期,因此也有触发器,即使我使用test.setStartDate(),修改日期也会生效。

1 个答案:

答案 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.