注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

スタブオブジェクトの検索と集計

ユニットテストを書く際に、オブジェクトセットの検索やオブジェクトの集計について、コードが呼び出す応答を指定するために、キャンドアンサー(スタブとも呼ばれます)を作成することがあります。スタブを使用するには、{ whenObjectSet }"@foundry/functions-testing-lib" からインポートする必要があります。

オブジェクトセットに対するフィルターのテスト

Copied!
1 2 3 4 5 6 7 8 9 10 // 日本語のコメントを追加します import { Objects } from "@foundry/ontology-api"; // オブジェクトセットを検索して、オブジェクトタイプを取得します const objectSet = Objects.search().objectType(); // myFunctions.filterObjectSet が期待通りに機能するかテストします // オブジェクトセット内のすべての要素がプロパティの範囲が 0 以上であることを確認します expect(myFunctions.filterObjectSet(objectSet)) .toEqual(objectSet.filter(s => s.prop.range().gte(0)))

スタブを使用してオブジェクトプロパティの集計をテストする

スタブを使用して、集計呼び出しの応答を定義することができます。

Copied!
1 2 3 4 5 // "@foundry/functions-testing-lib" から "whenObjectSet" をインポートします import { whenObjectSet } from "@foundry/functions-testing-lib" // Objects.search().objectType() から取得した各オブジェクトの "property" の合計値が 55 になるように設定します whenObjectSet(Objects.search().objectType().sum(s => s.property)).thenReturn(55);

これは、Objects.search().objectType().sum(s => s.property))が実行されるたびに、結果は55になることを意味します。

スタブを使用したオブジェクトのテスト

スタブを使用して、特定のオブジェクト検索の応答を定義することもできます。

Copied!
1 2 3 4 5 6 7 8 // 日本語のコメントを追加します import { whenObjectSet } from "@foundry/functions-testing-lib"; // オブジェクトが設定されたときに従業員オブジェクトを返すように設定 whenObjectSet(Objects.search().objectType().orderBy().takeAsync(10)).thenReturn([employeeObj]) // 集計関数が正しく動作することを期待するテスト await expect(myFunctions.aggregateSum(objectSet)).resolves.toEqual(65);

これは、この特定のオブジェクト検索集計が実行されるたびに、プロパティの合計が 65 になることを意味します。

スタブを使用して異なるオブジェクトセットをテストする

検索コンストラクタをオーバーロードすることで、複数の特定のオブジェクトセット検索をモックできます。各オブジェクトに rid プロパティを与える必要があります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 import { whenObjectSet } from "@foundry/functions-testing-lib"; const objA = Objects.create().objectType('a'); // オブジェクトAを作成し、タイプを'a'に設定 const objB = Objects.create().objectType('b'); // オブジェクトBを作成し、タイプを'b'に設定 objA.rid = 'ridA'; // オブジェクトAのリソースIDを設定 objB.rid = 'ridB'; // オブジェクトBのリソースIDを設定 // objAを含む検索結果に対してモックを設定し、検索結果がobjAのみを返すように設定 whenObjectSet(Objects.search().ObjType([objA]).all()).thenReturn([objA]); // objBを2回含む検索結果に対してモックを設定し、検索結果がobjAとobjBを返すように設定 whenObjectSet(Objects.search().ObjType([objB, objB]).all()).thenReturn([objA, objB]);