独自のテストの記述
Aura コンポーネントの操作中に、次のテストを記述することを検討してください。
- DOM の表示
- コンポーネントが目的の場所とタイミングで追加されることを検証します。
- コンポーネントの状態
- コンポーネントが期待どおりに応答することを確認します。
- サーバ側のコールバック応答
- 別のサービスまたはリソースへのコールから適切な応答を取得します。
- 変数の検証
- 他のソース (特にリモートソース) から読み込まれる変数値がある場合は、読み込まれることを確認します。
- 条件付き UI の表示
- ユーザに表示したい内容が表示されることを確認します。
- イベントの処理
- イベントへの応答をテストします。
幸い、LightningTestingService Github リポジトリの staticresources ディレクトリには、Jasmine および Mocha テストフレームワーク両方で、これらのケースすべての例が含まれています。
Jasmine についてのドキュメントは、https://jasmine.github.io を参照してください。簡単な設定があります。
Mocha についてのドキュメントは、https://mochajs.org を参照してください。Mocha は新しいので、目的の結果を得るにはプラグインが必要な場合があります。どちらのテストフレームワークでも、describe...it ブロック構造が使用されます。
it 関数を使用して、テストする内容と期待する動作 (または明示的に期待しない動作) を定義します。テストの名前を指定するには、describe ブロックで各関数をラップします。ブロック内で it 関数をグループ化します。グループ化された関数は、ブロック内で変数およびその他の値を共有できます。
1describe("A suite that passes", function() {
2 it("spec that verifies that true is true", function() {
3 expect(true).toBe(true);
4 });
5 it("spec that verifies that false is false", function() {
6 expect(false).toBe(false);
7 });
8});テストを並び替えて 1 つの describe 関数内で両方の it 関数を使用したり、ネガティブケース expect(true).not.toBe(false); についてテストしたりすることもできます。
同様の結果が得られるオプションがいくつかあります。大事なのは、it 関数の結果に重点を置くことです。
たとえば、jasmineHelloWorldTests.resource には、状態の変更を検証する単体テストが含まれています。
1describe('c:egComponentMethod', function() {
2 it("updates an attribute value when a method is invoked on the component's interface", function(done) {
3 $T.createComponent("c:egComponentMethod", null)
4 .then(function(component) {
5 component.sampleMethod();
6 expect(component.get("v.status")).toBe("sampleMethod invoked");
7 done();
8 }).catch(function(e) {
9 done.fail(e);
10 });
11 });
12});テストスイートを記述したら、CLI を使用してテストを転送および実行します。
$T ユーティリティオブジェクトの使用
LTS には、$T ユーティリティオブジェクトが含まれています。このオブジェクトには、所定のテスト操作を簡略化するメソッドがあります。上記の例では、$T.createComponent() メソッドで特定の属性を指定せずに、記述子 c:egComponentMethod を使用してコンポーネントを作成しています。ただし、$T.createComponent() メソッドを使用して、属性を追加したり、コンポーネントを DOM に挿入したりできます。
詳細
LightningTestingService Github リポジトリには、既知の問題についての継続中の解決策とディスカッションがあります。