【发布时间】:2020-07-29 11:56:32
【问题描述】:
我有这样的代码,我想在更改之前进行测试,但是当控制器调用 new dao() 时我无法模拟。
//controller.js
const dao = require('./dao');
exports.callDAOProcess = () => {
...
const result = new dao().getProcess();
...
return result;
};
//dao.js
function dao() {
model = require('./model');
}
dao.prototype.getProcess = function() {
return model.getModelProcess();
}
module.exports = dao;
//model.js
exports.getModelProcess = function () {
return 'process';
}
我可以在测试 dao.js 时模拟 getProcess,但是当我测试控制器时,我得到了真正的 getProcess 方法。我怎么能嘲笑它?
这是我预期的测试:mock 并收到:process:
test('Testing mock::', () => {
const dao = require('./dao');
jest.mock('./dao', () => jest.fn());
dao.getProcess = jest.fn(() => ('mock'));
const result = controller.callDAOProcess();
expect(result).toBe('mock');
});
【问题讨论】:
标签: javascript node.js unit-testing mocking jestjs