私はカルマを使ってMEANアプリケーションをテストしていますが、AngularJS(ng-mock)の$ httpBackend 'expectPOST'メソッドから空の配列を返すことができません。カルマを使用したHTTPポストリクエストから空の配列レスポンスをシミュレート
this.getIds = function(path, callback) {
// console.log('Sending request to get IDs to the path: ' + path);
$http.post('/dropbox/getIds', {path: path}).success(function(items) {
if(items.error !== undefined) {
console.log(items.error);
callback('Error with Dropbox API files list request'); // Do not alter string
return;
}
var empty = (items.length === 0) ? true : false;
callback(items, empty);
}).error(function(err) {
console.log(err);
callback('Error making ID request');
});
};
そしてここでは、ユニットテストコードスニペットです:
it('should request Dropbox file IDs at a give path - no errors but empty response', function() {
$httpBackend.expectPOST("/dropbox/getIds").respond({ data: [] });
dropboxService.getIds('path', function(items, empty) {
expect(items).to.deep.equal({data: []});
expect(empty).to.deep.equal(true);
});
});
「空」変数はHTTPとしてこのテストでは真でなければなりません。ここ
は、私がテストしていたサービスメソッドでありますPOST応答は空の 'data'配列ですが、 'empty'変数が実際にはfalseであるため、テストは失敗します。
誰かが、私が間違って行ったことを、テストコードか、おそらくサービスメソッド自体に表示できますか?
これは機能しませんし、問題を解決しません。私はコールバックを持っている他のテストがあり、私のテストは正常に動作します。問題は、コールバックを解決するのではなく空の配列をシミュレートすることです。完全な配列が返され、証明が必要な場合は、これらのメソッドが動作するこのメソッドの他のテストがあります。 – LJH
申し訳ありません新しい回答が動作するかどうかを確認してください。 – ppham27