gpt4 book ai didi

javascript - 集成 Jest 和 Rewire

转载 作者:行者123 更新时间:2023-12-03 01:14:22 27 4
gpt4 key购买 nike

致力于将项目从 Mocha 过渡到 Jest,以利用运行测试的速度以及 Jest 框架本身并遇到问题。 Rewire在代码库中使用得相当广泛,我在运行 gulp-jest 任务时遇到问题,并且对于那些使用 rewire 的文件。我认为这与模块加载或未加载有关,但我很困惑。这是真正简单的 gulp 任务,没有太多内容。我已经在代码库上运行了广泛的代码修改,并且许多测试都通过了,只是没有那些使用重新接线的测试。

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);
});

每当运行与重新连线相关的文件时,它们都会提示找不到该文件。我在这里错过了什么吗?我确信模块本身已为 require 设置了正确的路径。

这是来自 jest/rewire 的实际错误:

 FAIL  path/to/folder/file/app.test.js
● Test suite failed to run

Cannot find module '../../../../path/to/folder/file/app'

at Function.Module._resolveFilename (module.js:469:15)
at internalRewire (node_modules/rewire/lib/rewire.js:23:25)
at rewire (node_modules/rewire/lib/index.js:11:12)
at Object.<anonymous (path/to/folder/file/app.test.js:10:14)
at process._tickCallback (internal/process/next_tick.js:109:7)

使用 Node 6.X、jest 20.x

提前致谢!

最佳答案

Jest 有自己的模拟导入机制,称为 jest.mock .

您需要改用它而不是重新接线。

示例

// 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.

示例取自here

关于javascript - 集成 Jest 和 Rewire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45892496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com