テストユーティリティクラスの追加
前提条件:
このレッスンでは、前のチュートリアルで作成したトリガを検査するためのテストを追加します。テストデータを作成する必要があるため、他のテストクラスやテストメソッドからコール可能なテストデータ作成のためのメソッドが含まれるテストユーティリティクラスを追加します。
- 開発者コンソールで、 をクリックします。
- クラス名として「TestDataFactory」と入力し、[OK] をクリックします。
-
自動生成されたコードを削除し、次のコードを追加します。
1swfobject.registerObject("clippy.codeblock-0", "9"); 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17@isTest 18public class TestDataFactory { 19 20 public static Invoice_Statement__c createOneInvoiceStatement( 21 Boolean withLineItem) { 22 // Create one invoice statement 23 Invoice_Statement__c testInvoice = createInvoiceStatement(); 24 25 if (withLineItem == true) { 26 // Create a merchandise item 27 Merchandise__c m = createMerchandiseItem('Orange juice'); 28 // Create one line item and associate it with the invoice statement. 29 AddLineItem(testInvoice, m); 30 } 31 32 return testInvoice; 33 } 34 35 // Helper methods 36 // 37 private static Merchandise__c createMerchandiseItem(String merchName) { 38 Merchandise__c m = new Merchandise__c( 39 Name=merchName, 40 Description__c='Fresh juice', 41 Price__c=2, 42 Total_Inventory__c=1000); 43 insert m; 44 return m; 45 } 46 47 private static Invoice_Statement__c createInvoiceStatement() { 48 Invoice_Statement__c inv = new Invoice_Statement__c( 49 Description__c='Test Invoice'); 50 insert inv; 51 52 return inv; 53 } 54 55 private static Line_Item__c AddLineItem(Invoice_Statement__c inv, 56 Merchandise__c m) { 57 Line_Item__c lineItem = new Line_Item__c( 58 Invoice_Statement__c = inv.Id, 59 Merchandise__c = m.Id, 60 Unit_Price__c = m.Price__c, 61 Units_Sold__c = (Double)(10*Math.random()+1)); 62 insert lineItem; 63 64 return lineItem; 65 } 66} - をクリックします。
もうひとこと...
- このクラスには、createOneInvoiceStatement という public メソッドが 1 つ含まれます。このメソッドは、次のレッスンのテストメソッドでテストデータとして使用する請求書明細と商品品目を作成します。このメソッドは、品目名を請求書に追加するかどうかを示す Boolean 引数を取ります。
- このクラスには、createOneInvoiceStatement で使用される 3 つのヘルパーメソッドも含まれます。これらのメソッドはすべて private で、このクラス内でのみ使用されます。
- Apex クラスにはテストデータ作成用の public メソッドを含めることができますが、この共通ユーティリティクラスは @isTest アノテーションで定義されます。このアノテーションを使用することの利点は、クラスが 3 MB の組織コードサイズ制限の対象外となるという点です。このクラスに含まれる public メソッドは、テストコードからのみコールできます。