【发布时间】:2019-07-12 19:42:49
【问题描述】:
函数sendResponse 被调用,我可以判断是因为sendResponse 内的console.log 行已执行。但是,我的间谍说没有调用 sendResponse 方法。只是想知道我在这里做错了什么。
import * as ExpressHelpers from './express-helper';
describe('sendResponse', () => {
it('sends a 500 error response', () => {
const sendResponseSpy = spyOn(ExpressHelpers, 'sendResponse');
const mockResponse = () => {
const res: any = {};
res.status = jest.fn().mockReturnValue(res);
res.send = jest.fn().mockReturnValue(res);
return res;
};
const errorMsg = 'Server error msg';
const res = mockResponse();
ExpressHelpers.sendServerError(errorMsg, res);
expect(sendResponseSpy).toHaveBeenCalled();
});
});
export function sendResponse(statusCode: HttpStatus, message: string, data: {}, response: Express.Response) {
const responseEntity: ResponseEntity = {
message,
statusCode,
data,
};
response.send(responseEntity);
}
export function sendServerError(serverErrorMsg: string, res: Express.Response) {
sendResponse(HttpStatus.SERVER_ERROR, serverErrorMsg, null, res);
}
错误:
● Express Helper › sendResponse › sends a 500 error response
expect(spy).toHaveBeenCalled()
Expected spy to have been called, but it was not called.
35 | const res = mockResponse();
36 | ExpressHelpers.sendServerError(errorMsg, res);
> 37 | expect(sendResponseSpy).toHaveBeenCalled();
| ^
38 | });
39 | });
40 | });
at Object.it (src/helpers/express-helper.test.ts:37:37)
【问题讨论】:
-
不确定我是否遵循.. 我正在监视从
sendServerError调用的方法?除非这仅在我将间谍作为依赖项注入时才有效。 -
抱歉,我搞不清楚它是如何工作的。我以为您创建了间谍,但随后必须手动重新分配或传递它,因此 it 被调用。我刚刚检查了文档并模拟了一个方法将它与间谍交换。
-
是的,可能会令人困惑..所有商品:)
标签: javascript typescript jestjs