2016-09-14 5 views
0

データを返すREST URLを呼び出すサービスがあります。

私のサンプルコードは

$http('POST', '/mockUrl/resource/'+resourceValue).then(...); 

私のサービスが正常に動作し、それがデータを返すだろう。私の問題は、私がカルマでこれをどのようにテストするかです。今、私は呼び出されているmockUrlのためにテストされるべき別のresourceValueを持っています。 stackoverflowに来る前に、各テストで私は期待されたURLで$ httpBackendを定義していました。

例:

it('testing for status 200', function(){ 
     $httpBackend.when('POST', '/mockUrl/resource/'+1234) 
      .respond(function (method, url, data, headers) { 
       return [200, data1]; 
      }); 

     MyService.serviceMethod(1234).then(function(){ 
     //test the returned data 
     }); 
    }); 

it('testing for status 201', function(){ 
    $httpBackend.when('POST', '/mockUrl/resource/'+4567) 
     .respond(function (method, url, data, headers) { 
      return [201, data2]; 
      }); 

    MyService.serviceMethod(1234).then(function(){ 
     //test the returned data 
    }); 
}); 

私は上記のように私のカルマのテストを書くべきではないことを言われています。しかし、私はそれを避ける方法がわかりません。

私はすべてのテストに呼ばれることは決してありません

$httpBackend.when('POST',url) 
     .respond(function (method, url, data, headers) { 
     return data[option]; 
     }); 

しかし、この 'URL' を試してみました。私はさらに進める方法がわかりません。

+0

インデントされたコード – Hitmands

+0

を貼り付けることを検討してください。 – manu

答えて

0

あなたもおそらくあなたは時よりで、深いビューを持っている必要があります

afterEach(() => { 
    $httpBackend.verifyNoOutstandingExpectation(); 
    $httpBackend.verifyNoOutstandingRequest(); 
}); 

を使用することはありません、プラス...あなたは非同期操作をシミュレートするために必要とされる$httpBackend.flush();を呼び出すことはありませんようですhttps://docs.angularjs.org/api/ngMock/service/ $ httpBackend

+0

実際には$ httpBackend.flush()を呼び出し、$ httpBackend.verifyNoOutstandingExpectation()を確認します。 $ httpBackend.verifyNoOutstandingRequest();すべての呼び出しの後に。私の問題は、私は別のステータス(私は4つのステータスを持っている)のために異なる応答を返す必要があるということです。 1つのhttpBackendで別のURLを呼び出すだけで、まだ私のユースケースを満たしている可能性があります。 – manu

関連する問題