問題
開発者は、商品(API名:Product2)と価格表(API名:Pricebook2)のテストデータを作成するときにどのステートメントを使用しますか。
- List objList = Test.loadData(Account.sObjectType, “myResource”);
- Pricebook pb = new Pricebook();
- Id pricebookId = Test.getStandardPricebookId();
- IsTest(SeeAllData = false);
正解
- List objList = Test.loadData(Account.sObjectType, “myResource”);
- Pricebook pb = new Pricebook();
- Id pricebookId = Test.getStandardPricebookId();
- IsTest(SeeAllData = false);
解説
問題文の理解:
問題文から、開発者は商品(API名:Product2)と価格表(API名:Pricebook2)のテストデータを作成する際に、どのステートメントを使用するのかを問っています。これを解決するためには、以下のステップを踏む必要があります。
- オブジェクトの識別: まず、各ステートメントがどのオブジェクトに関連しているかを識別する必要があります。
- 関連性の確認: 商品や価格表のテストデータ作成に関連しているかどうかを確認します。
- API名の確認: 正しいオブジェクト名を使用しているか確認します。
- 関数やメソッドの機能: 使用されている関数やメソッドが、実際にテストデータを作成するためのものなのか、または関連する動作を行うものなのかを確認します。
これらのステップに基づいて、以下の選択肢に対する解説を行います。
それぞれの選択肢の理由について説明します。
□ List objList = Test.loadData(Account.sObjectType, ‘myResource’);
これは不正解です。このステートメントは、テストデータをロードするために使用されますが、Account.sObjectType
という部分が取引先オブジェクトを指しています。したがって、商品(API名:Product2)や価格表(API名:Pricebook2)のテストデータを作成するためのステートメントとは言えません。
□ Pricebook pb = new Pricebook();
これは不正解です。このコードは価格表の新しいインスタンスを作成するものですが、Pricebook
は正しいAPI名ではありません。正しいAPI名はPricebook2
です。
□ Id pricebookId = Test.getStandardPricebookId();
これは正解です。Test.getStandardPricebookId();
は組織内の標準価格表のIDを返すSalesforce既存のメソッドです。このメソッドの知識がないと、解答が難しく感じられるかもしれません。
参考:Test.getStandardPricebookId();
□ @IsTest(SeeAllData = false);
これは不正解です。@IsTest(SeeAllData = false)
はテストクラスやテストメソッドの上部にアノテーションとして付加されるもので、ステートメントとしての実行はできません。また、これはテストメソッドが組織の全データにアクセスするかどうかを制御するためのもので、直接的にテストデータの作成には関与しません。
Test.getStandardPricebookId()について
Test.getStandardPricebookId();
は、Apexテストクラスでよく使用されるメソッドです。このメソッドを使用する主な目的は、Apexテストの実行中に組織内の標準価格表のIDを取得するためです。
テストクラスでの使用例:
@isTest
private class SamplePriceBookTest {
static testMethod void testPriceBookMethod() {
// 商品(Product2)のテストデータ作成
Product2 testProduct = new Product2(Name = 'Test Product', Family = 'Hardware');
insert testProduct;
// 標準価格表のIDを取得
Id standardPricebookId = Test.getStandardPricebookId();
// 価格表エントリの作成
PricebookEntry testPricebookEntry = new PricebookEntry(
Pricebook2Id = standardPricebookId,
Product2Id = testProduct.Id,
UnitPrice = 1000,
IsActive = true
);
insert testPricebookEntry;
// 以下、テスト処理やアサートを記述...
}
}
Test.getStandardPricebookId();
メソッドを使用することで、テストデータの準備がより効率的に行えるのが分かります。このメソッドを知らないと、テストデータのセットアップが難しくなることも考えられますが、正しく使用することでテストの品質と効率が向上します。
コメント