2016-01-15 1 views
14

:あなたの通話のすべてをからかっているときe2eテストを嘲笑する際にAPIの変更を検出するにはどうすればよいですか?私はセットアップ我々のチームのプロジェクトに固体E2Eテストの基盤をしたいのですが、私はその質問に簡単な解決策を見つけることができません

、するための最良の方法は何ですかサーバーから返されたオブジェクトの実際のモデルが変更されているかどうかを検出しますか?彼らはモデルの古いバージョンをテストしているが、アプリが潜在的に壊れているので

あなたのテストはまだ合格でしょう。例えば

、モックは、それが実際に空のオブジェクトを返すとき、ユーザは、存在しない場合/api/users/1戻るnull、テストに合格できるが、次いで、試験される挙動が誤った仮定に依存し、したがって、失敗する可能性と仮定した場合予期しない方法で。

それともバックエンドは何とか最新の最新モデルと静的なJSONファイルを提供しているし、フロントエンドはこれに依存していますか?

もちろん、バックエンドで作業している人とフロントエンドで作業している人が別々のチームであるとします。

私はここで角度1.xと分度​​器を使用していますが、実際には技術に依存していません。あなたがトグルし、e2eService.isEnabled()、あなたのソリューションにフラグを注入または使用することを分度器の角度のモジュールシステムを使用することができますwindow.e2eHttp[request.url] = result;

window.e2eHttp[request.url] = null;、応答+ responseError:あなたは リクエストに応じてデータを格納するhttp interceptorを登録する必要が

答えて

6

私はあなたが(テスト時のフロントエンドの分離を)やっていることだと思うが正しいと、このように保管してください。 APIレスポンスを確認するために、バックエンドのためのユニットテストのセットを追加 - フロントエンドとバックエンドが密結合と一緒に開発している場合)

1:あなたのモックを検証するために何ができるか

は、それらの一つです。 このようにAPIで何か変更があった場合、バックエンドテストは失敗し、フロントエンドモックも更新する必要があることがわかります。

開発中は、定期的に、またはコード変更ごとに、両方のテストセット(e2eおよびバックエンドユニットテスト)を実行できます。

2)フロントエンドがバックエンドから多かれ少なかれ独立している場合は、あなたがE2Eテスト以外にも実行されるいくつかの統合テストを、持っている必要があります。 これらはバックエンドへの実際のHTTP要求を実行し、返されたデータ構造とモックを比較する必要があります。あなたはモックが古くなったときの状況を検出することができます。

第2のアプローチは、より信頼性の高いですが、ローカルの開発時にのみCIサーバー上で自動的にそれらを実行してすることはできませんので、統合テストは、おそらく、バックエンドのユニットテストよりも遅くなります。

+0

解決策2は面白そうです。私は間違いなくバックエンドを可能な限り少なくしたソリューションを探しています。 – deonclem

2

インターセプタのオンとオフを切り替えます。

は、その後、あなたのE2Eテストでは、データを持っている browser.wait + browser.executeScript window.e2eHttp[request.url]まで実装する必要があります。それは常に、角HTTP応答オブジェクトを持つことになります(HTTPステータスヘッダ、データ、電気ショック療法)

3

@Lablanc Menesesの同様の解決策は、JSONファイルのすべての呼び出しの応答を保存することです。あなたのe2eテストのためのインタセプタの中にレスポンスを保存してから、保存したJSONファイルをe2eテストに使用してください。 JSONは、apiサービスを実行するたびに自動的に更新されます。これは、最初にモデルを保存してからe2eテストに使用するために、すべてのサービスを一度実行する必要があります。モデルは更新されたAPIを実行するとすぐに更新されます。プロダクションビルドのレスポンスの保存を停止するトグルを作成できます。

関連する問題

 関連する問題