Newer Version Available
Test クラス
名前空間
Test のメソッド
Test のメソッドは次のとおりです。すべてのメソッドが静的です。
clearApexPageMessages()
署名
public static void clearApexPageMessages()
戻り値
型: void
使用方法
このメソッドは、テストでのみ使用できます。
例
1@isTest
2 static void clearMessagesTest() {
3 Test.setCurrentPage(new PageReference('/'));
4 ApexPages.addMessage(
5 new ApexPages.Message(ApexPages.Severity.WARNING, 'Sample Warning')
6 );
7 System.assertEquals(1, ApexPages.getMessages().size());
8 Test.clearApexPageMessages();
9 System.assertEquals(0, ApexPages.getMessages().size());
10 }createStub(parentType, 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() メソッドがコールされ、スタブメソッドの動作が実行されます。
enableChangeDataCapture()
署名
public static void enableChangeDataCapture()
戻り値
型: void
使用方法
enableChangeDataCapture() メソッドにより、[変更データキャプチャ] の [設定] で選択されたエンティティに関係なく、Apex テストで変更イベントトリガを起動できます。enableChangeDataCapture() メソッドは、[設定] で選択されたエンティティには影響しません。
enqueueBatchJobs(numberOfJobs)
署名
public static List<Id> enqueueBatchJobs(Integer numberOfJobs)
パラメータ
- numberOfJobs
- 型: Integer
- キューに追加するテストジョブの数。
使用方法
このメソッドを使用してテスト時間を短縮します。テストに組織の実際のバッチジョブを使用する代わりに、このメソッドを使用してバッチジョブのキューへの追加をシミュレーションします。enqueueBatchJobs(numberOfJobs) を使用する方が、実際のバッチジョブをキューに追加するより迅速です。
getEventBus()
署名
public static EventBus.TestBroker getEventBus()
使用方法
Test.getEventBus().deliver() を Test.startTest() と Test.stopTest() のステートメントブロックで囲みます。
1Test.startTest();
2// Create test events
3// ...
4// Publish test events with EventBus.publish()
5// ...
6// Deliver test events
7Test.getEventBus().deliver();
8// Perform validation
9// ...
10Test.stopTest();getStandardPricebookId()
署名
public static Id getStandardPricebookId()
使用方法
このメソッドでは、テストで組織データを照会できるかどうかに関係なく、組織内の標準価格表の 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()
署名
public static Boolean isRunningTest()
戻り値
型: Boolean
loadData(sObjectToken, resourceName)
署名
public static List<sObject> loadData(Schema.SObjectType sObjectToken, String resourceName)
パラメータ
- sObjectToken
- 型: Schema.SObjectType
- テストレコードを挿入する sObject 型。
- resourceName
- 型: String
- 読み込むテストレコードを含む .csv ファイルに対応する静的リソース。この名前は大文字と小文字を区別しません。
newSendEmailQuickActionDefaults(contextId, replyToId)
setContinuationResponse(requestLabel, mockResponse)
署名
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)
署名
public static void setCreatedDate(Id recordId, Datetime createdDatetime)
戻り値
型: void
使用方法
データベースの変更はテスト終了時にすべてロールバックされます。このメソッドをテスト実行前に存在していたレコードに対して使用することはできません。また、@isTest(SeeAllData=true) アノテーションのあるメソッドでは setCreatedDate を使用できません。これらのメソッドは組織内のすべてのデータにアクセスできるためです。このメソッドは、sObject ID と Datetime 値の 2 つのパラメータを取ります。いずれも null にできません。
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)
署名
public static Void setCurrentPage(PageReference page)
パラメータ
- page
- 型: System.PageReference
戻り値
型: Void
setCurrentPageReference(page)
署名
public static Void setCurrentPageReference(PageReference page)
パラメータ
- page
- 型: System.PageReference
戻り値
型: Void
setFixedSearchResults(fixedSearchResults)
署名
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)
署名
public static Void setMock(Type interfaceType, Object instance)
パラメータ
- interfaceType
- 型: System.Type
- instance
- 型: Object
戻り値
型: Void
使用方法
setReadOnlyApplicationMode(applicationMode)
署名
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}testInstall(installImplementation, version, isPush)
署名
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)
署名
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 }