http-backend-proxyモジュールを使用すると、コンテキスト オブジェクトを使用して、同じ URL のリクエストに対するレスポンスを変更できます。これを行うには、関数を.respond()
メソッドに渡します。このメソッドは、ステータスと応答データを含む配列を返す必要があります。この関数内では、ページ上の分度器テストから Angular アプリにデータを転送するために使用される、いわゆるコンテキスト オブジェクトにアクセスできます。テスト内からこのコンテキスト オブジェクトを変更できるため、Angular アプリは別の応答を受け取ることができます。
var HttpBackend = require('http-backend-proxy');
var proxy = new HttpBackend(browser);
// ...
// use one data for first response
proxy.context = {
notes: notifications,
messages: allMessages
};
proxy.when('GET', '...notificationsURL...').respond(function () {
return [200, $httpBackend.context];
});
// here make a first call
// use another data for second response
proxy.context = {
notes: notifications2,
messages: allMessages2
};
proxy.syncContext(); // required, update context content for Angular app
// here make a second call
注: 渡す関数は.respond()
シリアル化 (文字列に変換) され、ページに挿入されます。デフォルトでは、Angular からコンテキスト オブジェクトにアクセスするために変数$httpBackend
が使用されます。名前を変更するには、このドキュメント セクションを参照してください -コンテキスト オブジェクトの構成。