私が書いたいくつかのコードの単体テストを作成しようとしています。私が直面している問題は、関数の実行後にモックコールバックが呼び出されることを期待していますが、呼び出されないためテストが失敗することです。
describe("Asynchronous specs", function() {
var mockNext;
beforeEach(function() {
mockNext = jasmine.createSpy('mockNext');
var res;
parallelRequests.APICall(testObject[0], null, mockNext);
});
it("callback spy should be called", function () {
expect(mockNext).toHaveBeenCalled();
});
});
テストされる関数は非常に単純です。
function APICall(options, res, next) {
request(options, callback);
function callback(error, response, body) {
if (error) {
if (error.code === 'ETIMEDOUT') {
return logger.error('request timed out: ', error);
next(error);
}
logger.error('request failed: ', error);
next(error);
}
next(null);
}
}
私が疑う問題は、リクエストの非同期の性質のために API 呼び出しでモック コールバックが実行される前に、jasmine が期待をテストしていることです。done() とフラグの使用について他の人が提案しているものを使用してみましたが、うまくいきませんでした。この問題についてのガイダンスをいただければ幸いです。