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

オブジェクト検索と集計をスタブ化する

ユニットテストを記述するとき、コードが行う呼び出しへのレスポンスを指定するために、オブジェクトセットの検索やオブジェクトの集計に対して、あらかじめ用意した応答(「スタブ」とも呼ばれます)を作成したい場合があります。スタブを使用するには、"@foundry/functions-testing-lib" から { whenObjectSet } をインポートする必要があります。

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

Copied!
1 2 3 4 5 6 import { Objects } from "@foundry/ontology-api"; const objectSet = Objects.search().objectType(); expect(myFunctions.filterObjectSet(objectSet)) .toEqual(objectSet.filter(s => s.prop.range().gte(0)))

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

スタブを使用して、集計呼び出しへのレスポンスを定義できます。

Copied!
1 2 3 import { whenObjectSet } from "@foundry/functions-testing-lib" whenObjectSet(Objects.search().objectType().sum(s => s.property)).thenReturn(55);

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

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

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

Copied!
1 2 3 4 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 import { whenObjectSet } from "@foundry/functions-testing-lib"; const objA = Objects.create().objectType('a'); const objB = Objects.create().objectType('b'); objA.rid = 'ridA'; objB.rid = 'ridB'; whenObjectSet(Objects.search().ObjType([objA]).all()).thenReturn([objA]); whenObjectSet(Objects.search().ObjType([objB, objB]).all()).thenReturn([objA, objB]);

スタブを使用してリンクの走査をテストする

searchAround による走査は、ほかのオブジェクトセット検索と同じ方法でスタブ化できます。単一のオブジェクトを起点とし、検索コンストラクターで変換する場合も同様です。走査メソッド名はリンクタイプのフィールド名から生成されます。検索コンストラクターに渡す各オブジェクトには、rid プロパティを指定する必要があります。

Copied!
1 2 3 4 5 6 7 8 import { whenObjectSet } from "@foundry/functions-testing-lib"; const objA = Objects.create().objectType('a'); const objB = Objects.create().objectType('b'); objA.rid = 'ridA'; whenObjectSet(Objects.search().ObjType([objA]).searchAroundLinkField().all()).thenReturn([objB]);

スタブオブジェクトのリンクの状態を設定する例については、オントロジーの編集を確認するを参照してください。