この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

Test クラス

Visualforce テストに関連するメソッドが含まれます。

名前空間

System

Test のメソッド

Test のメソッドは次のとおりです。すべてのメソッドが静的です。

createStub(parentType, stubProvider)

テストに使用できる Apex クラスのスタブバージョンを作成します。このメソッドは Apex スタブ API に含まれます。System.StubProvider インターフェースで使用してモックフレームワークを作成できます。

署名

public static Object createStub(System.Type parentType, System.StubProvider stubProvider)

パラメータ

parentType
型: System.Type
スタブする Apex クラスの種別。
stubProvider
System.StubProvider
StubProvider インターフェースの実装。

戻り値

型: Object

テストで使用するスタブオブジェクトを返します。

使用方法

createStub() メソッドは System.StubProvider インターフェースと共に動作します。StubProvider インターフェースを実装して、スタブオブジェクトの動作を定義します。続いて、createStub() メソッドを使用して、スタブオブジェクトを作成します。スタブオブジェクトでメソッドを呼び出すと、StubProvider インターフェースの handleMethodCall() メソッドがコールされ、スタブメソッドの動作が実行されます。

enqueueBatchJobs(numberOfJobs)

非操作コンテンツのある指定した数のジョブをテストコンテキストキューに追加します。最初にジョブを 5 つまでテスト一括処理キューに入れ、それ以降のジョブはテスト Flex キューに配置します。テスト Flex キューのジョブが最大許容数の 100 件を超えると、制限の例外が発生します。

署名

public static List<Id> enqueueBatchJobs(Integer numberOfJobs)

パラメータ

numberOfJobs
型: Integer
キューに追加するテストジョブの数。

戻り値

型: List<Id>

キューに追加されたテストジョブの ID のリスト。

使用方法

このメソッドを使用してテスト時間を短縮します。テストに組織の実際のバッチジョブを使用する代わりに、このメソッドを使用してバッチジョブのキューへの追加をシミュレーションします。enqueueBatchJobs(numberOfJobs) を使用する方が、実際のバッチジョブをキューに追加するより迅速です。

getFlexQueueOrder()

テストコンテキスト Flex キュー内のジョブの ID の順序付きリストを返します。インデックスが 0 のジョブは、次に実行予定のジョブです。このメソッドは、@IsTest(SeeAllData=true) アノテーションが付加されていても、テストコンテキストの結果のみを返します。

署名

public static List<Id> getFlexQueueOrder()

戻り値

型: List<Id>

テストの Flex キュー内にあるジョブの ID の順序付きリスト。

getStandardPricebookId()

組織内の標準価格表の ID を返します。

署名

public static Id getStandardPricebookId()

戻り値

型: Id

標準価格表の ID。

使用方法

このメソッドでは、テストで組織データをクエリできるかどうかに関係なく、組織内の標準価格表の ID を返します。デフォルトでは、@isTest(SeeAllData=true) アノテーションが付加されていない限り、テストで組織データをクエリすることはできません。

標準価格で価格表エントリを作成するには、標準価格表の ID が必要です。このメソッドを使用して標準価格表 ID を取得すれば、テストで価格表エントリを作成できます。

次の例では、価格表エントリのテストデータをいくつか作成します。この例のテストメソッドは、標準価格表 ID を取得し、その ID を使用して標準価格で商品の価格表エントリを作成します。次に、テストはカスタム価格表を作成し、このカスタム価格表の ID を使用して、カスタム価格の価格表エントリを追加します。

1@isTest
2public class PriceBookTest {
3    // Utility method that can be called by Apex tests to create price book entries.
4    static testmethod void addPricebookEntries() {
5        // First, set up test price book entries.
6        // Insert a test product.
7        Product2 prod = new Product2(Name = 'Laptop X200', 
8            Family = 'Hardware');
9        insert prod;
10        
11        // Get standard price book ID.
12        // This is available irrespective of the state of SeeAllData.
13        Id pricebookId = Test.getStandardPricebookId();
14        
15        // 1. Insert a price book entry for the standard price book.
16        // Standard price book entries require the standard price book ID we got earlier.
17        PricebookEntry standardPrice = new PricebookEntry(
18            Pricebook2Id = pricebookId, Product2Id = prod.Id,
19            UnitPrice = 10000, IsActive = true);
20        insert standardPrice;
21        
22        // Create a custom price book
23        Pricebook2 customPB = new Pricebook2(Name='Custom Pricebook', isActive=true);
24        insert customPB;
25        
26        // 2. Insert a price book entry with a custom price.
27        PricebookEntry customPrice = new PricebookEntry(
28            Pricebook2Id = customPB.Id, Product2Id = prod.Id,
29            UnitPrice = 12000, IsActive = true);
30        insert customPrice;
31        
32        // Next, perform some tests with your test price book entries.
33    }
34}

invokeContinuationMethod(controller, request)

テストメソッド内で指定されたコントローラと継続のコールバックメソッドを呼び出します。

署名

public static Object invokeContinuationMethod(Object controller, Continuation request)

パラメータ

controller
型: Object
継続要求を呼び出すコントローラクラスのインスタンス。
request
型: Continuation
コントローラクラスのアクションメソッドから返される継続。

戻り値

型: Object

継続コールバックメソッドの応答。

使用方法

継続をテストするには、Test.setContinuationResponse メソッドと Test.invokeContinuationMethod メソッドを使用します。テストコンテキストでは、継続のコールアウトは外部サービスに送信されません。これらのメソッドを使用することで、擬似応答を設定でき、ランタイムから継続コールバックメソッドがコールされ擬似応答が処理されます。

Test.invokeContinuationMethod をコールする前に、Test.setContinuationResponse をコールします。Test.invokeContinuationMethod をコールすると、継続に関連付けられたコールバックメソッドがランタイムで実行されます。コールバックメソッドでは、Test.setContinuationResponse で設定された擬似応答が処理されます。

isRunningTest()

現在実行中のコードが、テストメソッドに含まれているコードによってコールされた場合、true を返します。その他の場合は、false を返します。テストからコールされたかどうかに応じて異なるコードを実行する必要がある場合に、このメソッドを使用します。

署名

public static Boolean isRunningTest()

戻り値

型: Boolean

loadData(sObjectToken, resourceName)

指定した静的リソース .csv ファイルから、指定した sObject 型のテストレコードを挿入し、挿入された sObject のリストを返します。

署名

public static List<sObject> loadData(Schema.SObjectType sObjectToken, String resourceName)

パラメータ

sObjectToken
型: Schema.SObjectType
テストレコードを挿入する sObject 型。
resourceName
型: String
読み込むテストレコードを含む .csv ファイルに対応する静的リソース。この名前は大文字と小文字を区別しません。

戻り値

型: List<sObject>

使用方法

このメソッドをコールする前に静的リソースを作成する必要があります。静的リソースは、拡張子が .csv のカンマ区切りファイルです。このファイルにはテストレコードの項目名と値が含まれます。ファイルの最初の行に項目名を含め、2 行目以降に値を含める必要があります。静的リソースについての詳細は、Salesforce オンラインヘルプの「静的リソースの定義」を参照してください。

.csv ファイルの静的リソースを作成したら、その静的リソースに MIME タイプが割り当てられます。次の MIME タイプがサポートされています。
  • text/csv
  • application/vnd.ms-excel
  • application/octet-stream
  • text/plain

newSendEmailQuickActionDefaults(contextId, replyToId)

QuickAction.QuickActionDefaultsHandler インターフェースを実装するクラスをテストするための新しい QuickAction.SendEmailQuickActionDefaults インスタンスを作成します。

署名

public static QuickAction.SendEmailQuickActionDefaults newSendEmailQuickActionDefaults(ID contextId, ID replyToId)

パラメータ

contextId
型: Id
メールメッセージの親レコード。
replyToId
型: Id
このメールメッセージが返信の場合、前のメールメッセージ ID。

戻り値

型: SendEmailQuickActionDefaults クラス

メールメッセージのクイックアクションに使用されるデフォルト値。

setContinuationResponse(requestLabel, mockResponse)

テストメソッド内の継続 HTTP 要求に対する疑似応答を設定します。

署名

public static void setContinuationResponse(String requestLabel, System.HttpResponse mockResponse)

パラメータ

requestLabel
型: String
継続 HTTP 要求に対応する一意の表示ラベル。この表示ラベルは Continuation.addHttpRequest によって返されます。
mockResponse
型: HttpResponse
Test.invokeContinuationMethod によって返される擬似応答。

戻り値

型: void

使用方法

継続をテストするには、Test.setContinuationResponse メソッドと Test.invokeContinuationMethod メソッドを使用します。テストコンテキストでは、継続のコールアウトは外部サービスに送信されません。これらのメソッドを使用することで、擬似応答を設定でき、ランタイムから継続コールバックメソッドがコールされ擬似応答が処理されます。

Test.invokeContinuationMethod をコールする前に、Test.setContinuationResponse をコールします。Test.invokeContinuationMethod をコールすると、継続に関連付けられたコールバックメソッドがランタイムで実行されます。コールバックメソッドでは、Test.setContinuationResponse で設定された擬似応答が処理されます。

setCreatedDate(recordId, createdDatetime)

テストコンテキスト sObject の CreatedDate を設定します。

署名

public static void setCreatedDate(Id recordId, Datetime createdDatetime)

パラメータ

recordId
型: Id
sObject の ID。
createdDatetime
型: Datetime
sObject の CreatedDate 項目に割り当てる値。

戻り値

型: void

使用方法

データベースの変更はテスト終了時にすべてロールバックされます。このメソッドをテスト実行前に存在していたレコードに対して使用することはできません。また、@isTest(SeeAllData=true) アノテーションのあるメソッドでは setCreatedDate を使用できません。これらのメソッドは組織内のすべてのデータにアクセスできるためです。このメソッドは、sObject ID と Datetime 値の 2 つのパラメータを取ります。いずれも null にできません。

次の例のように、CreatedDate を設定する前にテストレコードを挿入します。
1@isTest 
2private class SetCreatedDateTest {
3    static testMethod void testSetCreatedDate() {
4        Account a = new Account(name='myAccount');
5        insert a;
6        Test.setCreatedDate(a.Id, DateTime.newInstance(2012,12,12));
7        Test.startTest();
8        Account myAccount = [SELECT Id, Name, CreatedDate FROM Account 
9                             WHERE Name ='myAccount' limit 1];
10        System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2012,12,12));
11        Test.stopTest();
12    }
13}

setCurrentPage(page)

コントローラの現在の PageReference を設定する Visualforce のテストメソッド。

署名

public static Void setCurrentPage(PageReference page)

パラメータ

page
型: System.PageReference

戻り値

型: Void

setCurrentPageReference(page)

コントローラの現在の PageReference を設定する Visualforce のテストメソッド。

署名

public static Void setCurrentPageReference(PageReference page)

パラメータ

page
型: System.PageReference

戻り値

型: Void

setFixedSearchResults(fixedSearchResults)

固定された検索結果のリストを、テストメソッドで後続のすべての SOSL ステートメントに返されるよう定義します。

署名

public static Void setFixedSearchResults(ID[] fixedSearchResults)

パラメータ

fixedSearchResults
型: ID[]
opt_set_search_results で指定されたレコード ID のリストは、WHERE 句または LIMIT 句に指定されていない場合、通常は SOSL クエリで返される結果を置き換えます。これらの句が SOSL クエリにある場合、固定された検索結果のリストに適用されます。

戻り値

型: Void

使用方法

opt_set_search_results が指定されていない場合、後続のすべての SOSL クエリは結果を返しません。

詳細は、「SOSL クエリの単体テストへの追加」を参照してください。

setMock(interfaceType, instance)

擬似応答モードを設定し、HTTP クラスまたは WSDL から自動生成されたコードを使用してコールアウトが実行されるたびに擬似応答を送信するように、Apex ランタイムに指示します。

署名

public static Void setMock(Type interfaceType, Object instance)

パラメータ

interfaceType
型: System.Type
instance
型: Object

戻り値

型: Void

使用方法

コールアウトを実行するコードが管理パッケージに含まれる場合に疑似コールアウトを行うには、同じパッケージ内のテストメソッドから同じ名前空間を使用して Test.setMock をコールします。

メモ

setReadOnlyApplicationMode(applicationMode)

Salesforce のアップグレードおよびダウンタイム中に参照のみモードをシミュレートするには、Apex テストにおける組織のアプリケーションモードを参照のみに設定します。アプリケーションモードは、Apex テストの各実行が終了するとデフォルトのモードにリセットされます。

署名

public static Void setReadOnlyApplicationMode(Boolean applicationMode)

パラメータ

applicationMode
型: Boolean

戻り値

型: Void

使用方法

getApplicationReadWriteMode() システムメソッドも参照してください。

DML 例外のシミュレーションなど、参照のみモードのテストに無関係の目的で setReadOnlyApplicationMode を使用しないでください。

次の例では、アプリケーションモードを参照のみに設定し、新しい取引先レコードを挿入しようとしています。結果は例外となります。その後、アプリケーションモードはリセットされ、正しく挿入されます。

1@isTest
2private class ApplicationReadOnlyModeTestClass {
3  public static testmethod void test() {
4    // Create a test account that is used for querying later.
5    Account testAccount = new Account(Name = 'TestAccount');
6    insert testAccount;
7
8    // Set the application read only mode.
9    Test.setReadOnlyApplicationMode(true);
10
11    // Verify that the application is in read-only mode.
12    System.assertEquals(
13               ApplicationReadWriteMode.READ_ONLY, 
14               System.getApplicationReadWriteMode());
15
16    // Create a new account object.
17    Account testAccount2 = new Account(Name = 'TestAccount2');
18
19    try {
20      // Get the test account created earlier. Should be successful.
21      Account testAccountFromDb = 
22        [SELECT Id, Name FROM Account WHERE Name = 'TestAccount'];
23      System.assertEquals(testAccount.Id, testAccountFromDb.Id);
24
25      // Inserts should result in the InvalidReadOnlyUserDmlException 
26      // being thrown.
27      insert testAccount2;      
28      System.assertEquals(false, true);
29    } catch (System.InvalidReadOnlyUserDmlException e) {
30      // Expected
31    }        
32    // Insertion should work after read only application mode gets disabled.
33    Test.setReadOnlyApplicationMode(false);
34
35    insert testAccount2;
36    Account testAccount2FromDb = 
37       [SELECT Id, Name FROM Account WHERE Name = 'TestAccount2'];
38    System.assertEquals(testAccount2.Id, testAccount2FromDb.Id);
39  }
40}

startTest()

テストが実際に開始されるときに、テストコードのポイントをマークします。 ガバナ制限をテストする場合にこのメソッドを使用します。

署名

public static Void startTest()

戻り値

型: Void

使用方法

stopTest と共にこのメソッドを使用して、startTest メソッドの後のすべての非同期コールが、アサーションまたはテストを実行する前に実行されるようにすることができます。各テストメソッドは、このメソッドを 1 回のみコールできます。このメソッドの前のすべてのコードを、変数の初期化、データ構造の入力などのために使用する必要があります。これにより、テストを実行するために必要なすべてを設定できます。startTest へのコールの後および stopTest の前に実行するコードはすべて、新しいガバナ制限セットが割り当てられます。

stopTest()

テストが終了するときに、テストコードのポイントをマークします。このメソッドは startTest メソッドと組み合わせて使用します。

署名

public static Void stopTest()

戻り値

型: Void

使用方法

各テストメソッドは、このメソッドを 1 回のみコールできます。stopTest メソッドの後に実行するコードはすべて、startTest がコールされる前に有効だった元の制限が割り当てられます。startTest メソッドの後に作成されたすべての非同期コールはシステムによって収集されます。stopTest を実行する場合、すべての非同期プロセスが同期して実行されます。

startTest ブロックおよび stopTest ブロックでコールされた @future または executeBatch などの非同期コールは、キュー内ジョブ数の制限に対してカウントされません。

メモ

testInstall(installImplementation, version, isPush)

パッケージでのインストール後スクリプトの指定に使用される、InstallHandler インターフェースの実装をテストします。テストは、開発環境のテストイニシエータとして実行されます。

署名

public static Void testInstall(InstallHandler installImplementation, Version version, Boolean isPush)

パラメータ

installImplementation
型: System.InstallHandler
InstallHandler インターフェースを実装するクラス
version
型: System.Version
登録者組織にインストールされた既存パッケージのバージョン番号を指定します。
isPush
型: Boolean
(省略可能) アップグレードがプッシュかどうかを指定します。デフォルト値は、false です。

戻り値

型: Void

使用方法

このメソッドでは、テストのインストールが失敗すると実行時例外が発生します。

1@isTest static void test() {
2  PostInstallClass postinstall = 
3    new PostInstallClass();
4    Test.testInstall(postinstall, 
5      new Version(1,0));
6  }

testUninstall(uninstallImplementation)

パッケージでのアンインストールスクリプトの指定に使用される、UninstallHandler インターフェースの実装をテストします。テストは、開発環境のテストイニシエータとして実行されます。

署名

public static Void testUninstall(UninstallHandler uninstallImplementation)

パラメータ

uninstallImplementation
型: System.UninstallHandler
UninstallHandler インターフェースを実装するクラス

戻り値

型: Void

使用方法

このメソッドでは、テストのアンインストールが失敗すると実行時例外が発生します。

1@isTest static void test() {
2  UninstallClass uninstall = 
3    new UninstallClass();
4    Test.testUninstall(uninstall);
5  }