我正在尝试为我编写的一些代码编写单元测试,我遇到的问题是我希望在执行函数后调用我的模拟回调,但我的测试失败,因为它从未被调用。
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 调用中执行模拟回调之前,茉莉花测试了预期。我尝试过使用其他人建议使用 done() 和标志的方法,但没有运气。希望能在这件事上得到一些指导。