Memos About Salesforce

Salesforceにハマってたこと!

Apex 標準コントローラークラス テストクラス

こんにちは、管理人の@Salesforce.Zです。

Salesforceの標準コントローラーを使ったら、いろいろ楽なところもあるでしょう

しかし、その標準コントローラークラスのテストクラスを書く時に、ページのパラメータ設定などもあり

どう書けばいいか一時的に迷ってしまうことがありませんか

今回、この標準コントローラークラスのテストクラスを書くテンプレートを共有します。

読んだら得ること

★ 標準コントローラークラスのテストクラスの作成

目次

標準コントローラークラスを使用する例

VF側

<apex:page standardController="Account" extensions="yourControllerExtension">
    {!greeting} <p/>
    <apex:form>
        <apex:inputField value="{!account.name}"/> <p/>
        <apex:commandButton value="Save" action="{!save}"/>
    </apex:form>
</apex:page>

APEX側

public class yourControllerExtension {
    public Id parentId;
    private final Account acct;
    
    public myControllerExtension(ApexPages.StandardController stdController) {
        this.acct = (Account)stdController.getRecord();
        parentId = ApexPages.currentPage().getParameters().get('Id');
        Account Rec = [SELECT id FROM Account WHERE Id =: parentId ];
    }

    public String getGreeting() {
        return 'Hello ' + acct.name + ' (' + acct.id + ')';
    }
}

テストクラス

private class yourControllerExtensionTest {
    static testMethod void your_Test(){
        PageReference your_page = Page.yourpagename;
        Test.setCurrentPage(your_page);
        your_page.getParameters().put('Id' , 'xxxxxxxxxxxxxxx' );
        Account acc = new Account();
        ApexPages.StandardController sc = new ApexPages.StandardController(acc);

        Test.startTest();
        yourControllerExtension  your_ctrl = new yourControllerExtension (sc);
        Test.stopTest();
    }
}

終わりに

非常にシンプルなあと思って、あまり解釈を入れていないです。