我的项目中有两个文件:
controller.js
const controller = (request, response, route_name) => {
parser[route_name](request.query, request.body, (err, data) => {
...
}
};
export default controller;
parser.js
const parser = {
foo: (query, body, callback) => {
...
return callback(obj, null);
}
};
export default parser;
现在,我目前正在尝试测试控制器。第一个测试是发送格式错误的请求,解析器除外,它使用某些参数调用回调。我没有找到方法或库来更改解析器对象内部函数的行为。你们可以帮忙吗?
答案 0 :(得分:0)
假设您将解析器模块这样导入controller.js
import parser from './parser`
您可以在测试文件中轻松模拟这样的模块:
jest.mock('./parser', () => ({ // note the path is relative to your test file
foo: () => //your mock implementation here
}))
如果您想测试是否使用正确的参数调用了parser.foo
,则可以使其成为间谍并将解析器导入测试以检查正确的调用:
jest.mock('./parser', () => ({
foo: jest.fn(() => //your mock implementation here)
}))
import parser from './parser'
import controller from './controller
controller(someRequestMock, someResponseMock, 'foo' )
expect(parser.foo).toHaveBeenCalledWith(...)