我正试图在Jest中找出手动模拟。我认为这应该很容易......但事实并非如此。
我的项目目录就像
model / user.js和models / __ mocks __ / user.js都有相同的代码:
tableView.selectRowAtIndexPath(:_)
文件__tests __ / user-test.js如下所示:
module.exports = {
create(username, password) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({"username":username, "password": password});
}, 100);
});
}
}
这个工作正常,测试通过,但当我将其更改为:
test('user creation works', () => {
const user = require('../models/user');
//const user = jest.mock('../models/user');
return user.create("mitchell", "boo");
});
它不起作用,吐出来:
test('user creation works', () => {
//const user = require('../models/user');
const user = jest.mock('../models/user');
return user.create("mitchell", "boo");
});
答案 0 :(得分:14)
啊!弄清楚了!我的文件夹结构很好。结果我对“jest.mock”实际上做了什么有误解。 “jest.mock”改变节点“require”函数的行为来使用mock,它不会自己执行。
我的测试应该看起来像:
jest.mock('../models/user');
test('user creation works', () => {
const user = require('../models/user');
return user.create("mitchell", "boo");
});