AngularJS を使用した Web アプリの開発を開始したばかりですが、適切にテストする際に問題が発生しているため、アドバイスを利用できます。
通常、テストするコンポーネントは次のとおりです。
- Web API
- 角度コントローラー
- 角度ルーティング
- HTML レンダリングとコントローラーの HTML 要素への Angular バインディング
最小限の労力で、可能であれば重複することなく、これらすべてをテストするにはどうすればよいでしょうか?
データベース中心のアプリケーションの場合、すべてのテストに十分なデータを生成し、DB とテストをリセットするプロセスが必要になるため、完全な統合テスト (つまり、データがロードされたデータベースに接続されたライブ サーバー) は特に面倒です。互いのデータを変更しないように注意する必要があります。(ここで何か不足している場合はお知らせください)
上記の点から、サーバーとクライアントの間のリンクを切断し、モック データのみを使用して Angular テストを実行するのが最善であると想定しています。
また、E2E テストが考えられるすべてのシナリオを処理する場合、ユニット テスト コントローラーは、それらの値がモデルにバインドされているため冗長であると想定しています (したがって、上記の 2、3、および 4 のすべてをテストすることになります)。単体テストは、非常に複雑なコントローラーで、またはサービスとディレクティブをテストする場合にのみ役立ちます。
$httpBackend
ただし、単体テストで行うように、テストごとに を使用してモックする方法に関する情報は見つかりませんでしexpect*()
た。Angular のドキュメントでは、必要に応じwhen*()
て時折プラスを使用することを提案しているようです。passthrough()
ただし、これにより、すべてのシナリオのテスト データを作成するという前述の問題が発生し、テストが影響を受けないようにするために、各テストの前にインメモリ DB をリセットする必要がある可能性があります。また、サーバーへの呼び出しが欠落しているか冗長ではないことを確認するためのどのチェックを使用するかの安全性が失われています。$httpBackEnd.expect*()
これは、これをチェックするために単体テストコントローラーも必要であることを示唆しています。
上記の4つのコンポーネントのテストと上記の懸念に対処するAngularJSアプリの詳細なテスト戦略を誰かが提供できますか?