2016-10-02 6 views
0

を持っていない私は、次のコードを持っている: (beforeEach)ジャスミンの仕様は全く期待

spyOn(HttpService, 'post').and.callFake(function (url, paging, targetSpinner) { 
     return $q.when(_fakeServerResponse); 
    }); 

テスト・ケース:

it('should compare size', function() { 
    service.get({},'','').then(function (serviceResponse) { 
     expect(serviceResponse.x).toEqual(_fakeServerResponse.x); 

とgetメソッド:

return httpService.post(apiUrls).then(postComplete) 

私の問題をタイトルに記載されているように、なぜジャスミンが期待はしないと言っているのか

テストが使用されている実行していないサービス自体:

myService.get(data, param1, param2).then(getComplete); 

私も(私はそれを見ると、問題の源である、仕様のケースを実行するときに、getCompleteが呼び出されないことを追加しますまだ私はそれが呼ばれない理由を知らない)。

ありがとうございます。

答えて

1

$ qは非同期です。返される約束は、次のスコープダイジェストでのみ解決されます。あなたのテストはかなりのようになります。エラー:予期しない要求:POST/API/V1 /ユーザー/

it('should compare size', inject(function($rootScope) { 
    var actualX; 
    service.get({},'','').then(function(serviceResponse) { 
    actualX = serviceResponse.x; 
    }; 

    $rootScope.$apply(); // that will actually resolve the promise 

    expect(actualX).toEqual(_fakeServerResponse.x); 
})); 
+0

おかげで、postCompleteメソッドが戻った後、私はエラーを取得し、私はそれを変更し、私は戻って応答を得たが、索引 これ以上の要求はありません。これは、テストのthen節が決して入力されないことを意味します。どうすればいいの?すべてのリクエストは偽のものに置き換えてはなりませんか? –

+0

コードを見ずに理由を説明するのは難しいです。 –