Jest中unmock和dontMock之间的区别

doo*_*urt 5 javascript unit-testing jestjs

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

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

其他人这样做: -

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

我在Jest网站上找不到任何文档(文档不是很好,说实话),所以我改变了我的一个套房,为了一个傻笑dontMock而且爆炸了很多......有什么区别?

doo*_*urt 10

在Jest文档中有所介绍.

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

我正在使用babel而且我的unmocked进口不起作用?

升级jest-cli0.9.0.

说明:

jest.dontMock('foo');

import foo from './foo';
Run Code Online (Sandbox Code Playgroud)

在ES2015中,导入语句在所有其他语句之前被提升

var foo = require('foo'); jest.dontMock('foo'); // Oops!
Run Code Online (Sandbox Code Playgroud)

在Jest 0.9.0中,jest.unmock引入了一个新的API .与babel插件一起使用时,现在可以正常使用babel-jest:

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

import foo from './foo';

// foo is not mocked!
Run Code Online (Sandbox Code Playgroud)

有关如何启用babel支持,请参阅" 入门指南".