Memos About SalesForce

Salesforceにハマってたこと!

テストガバナー制限 秘密方法で制限をリセット

IT転職ならビーサイド!

SFDCでは、テストクラスの実行によって

ガバナー制限に引っかかる時あるでしょう

今回、【System.LimitException: Too many SOQL queries: 101】について

その解消秘密を公開します。

欲しけりゃくれてやる・・・。

探せ!

この世の全てをそこに置いてきた〜笑


目次

制限

サンプルコード
@IsTest
private class MyTestClass {
    private static testMethod void myTest() {
        // データの準備
        List exsists = [Select Id From CustomObject__c Where Name='hoge']; 
        if (!exsists.isEmpty()) {
            delete exsists; 
        }
        kasutamuSobject__c c = new kasutamuSobject__c(Name='hoge');
        insert c; // テスト用データの作成
        Test.startTest();
            Account a = new Account(Name='hoge');
            insert a; // テストとは直接関係ないが、ガバナ制限をリセットさせるためのDML呼び出し
            ///////////////////////////
            /////テストしたいこと//////
            ///////////////////////////
        Test.stopTest();
        System.assertEquals('sample', result);
    }
}
作成するデータ数

もうひとつ、作成するレコード数を減らすも効果ある IT転職ならビーサイド!

なぜなら、主従関係のせいで複数作成する場合に、積み上げ集計項目が原因でトリガが動作しちゃう

解説

注意点: Test.startTest()が呼ばれてから最初のDMLまたはWeb Serviceメソッド呼び出してガバナ制限がリセットされる

参考サイト

Apexテストコード作成の落とし穴 | Salesforce Developers Japan Blog Archives https://help.salesforce.com/articleView?id=000181404&language=ja&type=1

IT転職ならビーサイド!