1

分度器テスト内で模擬呼び出しを更新するための良い解決策があるかどうか疑問に思っています。呼び出しをモックできるようにする必要があります (これは ngMockE2E を使用して実行できます) が、次に呼び出しが行われたときに、別の結果が返されるようにしたいと考えています。

httpbackend.when('GET', ....URL....).respond(200, results);

whereresultsは返される json オブジェクトです。

初めて呼び出しが行われると、正しい json が返されます。しかし、同じテスト内で、次回呼び出しが行われたときに更新された json が返されるように、これらの結果を更新したいと考えています。

考え?

4

1 に答える 1

1

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が使用されます。名前を変更するには、このドキュメント セクションを参照してください -コンテキスト オブジェクトの構成

于 2015-09-26T19:30:32.930 に答える