21

angular で e2e テスト スイートをセットアップしようとしていますが、$httpBackend を使用して定型応答を返す必要があります。ファイルの内容を返すことができればいいのですが、たとえば

  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    return getContentOf("/somefile");
  });

私は $http を使用しようとしました。

  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    return $http.get("/responses/phones.js");
  });

angular は $httpBackend からのプロミスを返すことをサポートしていないと思いますか?

私ができる 1 つの方法は、アプリの読み込み時に応答を含む js ファイルを参照し、ファイルの内容を変数に割り当てることですが、オンデマンドでデータを読み込むことができる方がはるかに優れています。

4

3 に答える 3

31

$httpBackend は返された promise では機能しないため、これを行う 1 つの方法は、データを同期的に取得することです。$http にはすぐに使用できる同期オプションがないため、次のように、それなしでファイルを呼び出す必要があります。

$httpBackend.whenPOST('/phones').respond(function(method, url, data) {
  var request = new XMLHttpRequest();

  request.open('GET', '/responses/phones.js', false);
  request.send(null);

  return [request.status, request.response, {}];
});
于 2014-06-18T13:58:15.547 に答える