Javascript js模拟模块中的方法
我正在用Jest.js测试生成器函数,但我的问题通常是关于模块内的模拟函数 Foo.js有:-Javascript js模拟模块中的方法,javascript,unit-testing,mocking,jestjs,Javascript,Unit Testing,Mocking,Jestjs,我正在用Jest.js测试生成器函数,但我的问题通常是关于模块内的模拟函数 Foo.js有:- const Foo = { callMe() { return true; }, callMe2() { return true; } }; export default Foo; 在Jest测试中,我希望Foo.callMe抛出一个错误,但我无法让它与Jest mock一起工作 import Foo from '../Foo'; it('fails
const Foo = {
callMe() {
return true;
},
callMe2() {
return true;
}
};
export default Foo;
在Jest测试中,我希望Foo.callMe
抛出一个错误,但我无法让它与Jest mock一起工作
import Foo from '../Foo';
it('fails my generator function', () => {
const gen = myGenFunction();
expect(gen.next().value).toEqual(call(Foo.callMe));
});
生成器函数如下所示:
export function* myGenFunction(action) {
try {
const response = yield call(Foo.callMe);
console.log('Success');
} catch(err) {
console.log('Error!!!');
} finally {
// do something else
}
}
如何使
Foo.callMe
抛出错误?我尝试了一些方法,但到目前为止没有任何效果。通过使用redux saga的投掷方法,我成功地实现了我想要的
it('fails my generator function', () => {
const error = { message: 'Look see here, an error' };
const gen = myGenFunction();
...
expect(gen.throw(error).value).toEqual(
put(actions.setIsLoading(false)), // action that happens on fail
'gen should yield an Effect put(actions.setIsLoading(false))'
);
});
这里有很好的文档记录: