Javascript 整合玩笑和重新布线
致力于让项目从Mocha过渡到Jest,以利用运行测试的速度以及Jest框架本身和遇到问题的速度。在代码库中使用得相当广泛,我在运行gulpjest任务时遇到了一个问题,并且只针对那些使用rewre的文件。我假设这与模块加载或不加载有关,但我被难住了。这是一个非常简单的吞咽任务,没什么大不了的。我已经在代码库上运行了大量的codemod,并且通过了许多测试,只是没有使用rewre的测试Javascript 整合玩笑和重新布线,javascript,node.js,gulp,jestjs,Javascript,Node.js,Gulp,Jestjs,致力于让项目从Mocha过渡到Jest,以利用运行测试的速度以及Jest框架本身和遇到问题的速度。在代码库中使用得相当广泛,我在运行gulpjest任务时遇到了一个问题,并且只针对那些使用rewre的文件。我假设这与模块加载或不加载有关,但我被难住了。这是一个非常简单的吞咽任务,没什么大不了的。我已经在代码库上运行了大量的codemod,并且通过了许多测试,只是没有使用rewre的测试 gulp.task('jest', function() { process.env.NODE_ENV
gulp.task('jest', function() {
process.env.NODE_ENV = 'test';
return gulp.src('name/path').pipe(
jest({
preprocessorIgnorePatterns: ['<rootDir>/node_modules/'],
automock: false,
resetModules: true,
setupFiles: ['./jestsetup.js']
})
);
});
gulp.task('newtest', function(callback) {
runSequence('env', 'jest', callback);
});
使用节点6.X,jest 20.X
提前谢谢 Jest有自己的模仿导入机制,称为 你需要切换到使用它,而不是重新布线 范例
// banana.js
module.exports = () => 'banana';
// __tests__/test.js
jest.mock('../banana');
const banana = require('../banana'); // banana will be explicitly mocked.
banana(); // will return 'undefined' because the function is auto-mocked.
让我吃惊的是,Proxyquire与jest不兼容。要模拟依赖项,您需要利用模拟库,如
请看一看这篇文章,了解如何成功地模拟依赖包。是的,我理解这一点,但有什么办法可以解决吗?我们非常频繁地使用rewire,并且必须使用jest的模拟工具重新编写代码,这是非常重要的。想知道我是否可以动态地进行锁定并绕过Jest?*我相信现在是
取消锁定
了,也许你可以使用monkey patch重新布线
,编写你自己的“重新布线”函数,在内部使用Jest.mock。把它放在jest.setup文件中,有趣的是,类似的东西似乎可以工作。我希望我不必求助于这样的东西,但这比重写1000个测试要省力:)第二个选择是使用codemod,类似的东西,或者写一个:]从中汲取灵感
// banana.js
module.exports = () => 'banana';
// __tests__/test.js
jest.mock('../banana');
const banana = require('../banana'); // banana will be explicitly mocked.
banana(); // will return 'undefined' because the function is auto-mocked.