Jest.js模拟模块中的方法

时间:2017-07-24 11:57:51

标签: 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 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抛出错误?我尝试了一些事情,但到目前为止没有任何工作。

1 个答案:

答案 0 :(得分:1)

我已经设法通过使用redux-saga的 throw 方法实现了我想要的效果。

val b = new Inherit[Double](new Other().asInstanceOf[Base[Double]])

这里有很好的记录:https://redux-saga.js.org/docs/basics/ErrorHandling.html