Jest 中 unmock 和 dontMock 的区别

Difference between unmock and dontMock in Jest

所以我一直在编写一个成功的单元测试库,一切看起来都很好。然后我在一些在线示例中注意到我这样做的地方:-

jest.unmock('../lib/q');

其他人这样做:-

jest.dontMock('../lib/q');

我在 Jest 网站上找不到任何文档(老实说,文档不是很好),所以我把我的一个套件换成了 dontMock 并且爆炸了很多。 ..有什么区别?

这是covered in the Jest documentation

似乎我们现在都应该使用 unmock 来防止将模拟提升到 ES6 导入之上:

I'm using babel and my unmocked imports aren't working?

Upgrade jest-cli to 0.9.0.

Explanation:

jest.dontMock('foo');

import foo from './foo';

In ES2015, import statements get hoisted before all other

var foo = require('foo'); jest.dontMock('foo'); // Oops!

In Jest 0.9.0, a new API jest.unmock was introduced. Together with a plugin for babel, this will now work properly when using babel-jest:

jest.unmock('foo'); // Use unmock!

import foo from './foo';

// foo is not mocked!

See the Getting Started guide on how to enable babel support.