如何为VF页面用作表达式语言的代码编写测试类

时间:2016-02-20 07:51:48

标签: salesforce visualforce apex test-class

我需要为控制器类中的getter,setter方法编写测试覆盖率代码

public Boolean showNtc {
    get {
        if (reg[0].Status__c == 'Review') {
            return true;
        } else {
            return false;
        }
    }
    private set;
}
VisualForce页面代码中的

如下所示

<apex:outputPanel id="step2" rendered="{!showNtc}"

一切正常,预计我无法通过测试类执行上述代码。我尝试了几种方法,但我失败了。

1 个答案:

答案 0 :(得分:1)

为了通过测试覆盖此代码,您必须模拟至少2个状态:

  • reg[0].Status__c == 'Revire'
  • reg[0].Status__c != 'Revire'

另外,我建议考虑reg没有记录的情况,因为这可能会导致NPE。

所以在你的测试中你需要类似的东西

@isTest
static void test1() {
    ObjectWhichIsOnRegList__c obj = new ObjectWhichIsOnRegList__c();
    obj.Status__c = 'Review';
    insert obj;

    ControllerClassName ctrl = new ControllerClassName();
    System.assert(ctrl.showNtc);
}


@isTest
static void test1() {
    ObjectWhichIsOnRegList__c obj = new ObjectWhichIsOnRegList__c();
    obj.Status__c = 'Any other Status, but not Review';
    insert obj;

    ControllerClassName ctrl = new ControllerClassName();
    System.assert( !ctrl.showNtc);
}