目前,我正在使用Jest作为我们的测试框架,它看起来很棒。但是,我们的JS有很多嵌套结构。它看起来像这样:
jest.dontMock('../../../../src/js/component/sum');
describe('sum', function() {
it('adds 1 + 2 to equal 3', function() {
var sum = require('../../../../src/js/component/sum');
expect(sum(1, 2)).toBe(3);
});
});
基本上,它引用了源js文件夹。我正在尝试使用<rootDir>
。它仍然不起作用。
jest.dontMock('<rootDir>/src/js/sum');
我可以提供一些建议来重构这个
编辑:为了避免一些混淆,需要来自node.js而不是require.js。 jest和require()都使用当前测试路径作为根路径。
非常感谢提前
答案 0 :(得分:0)
您可以使用Facebook的@providesmodule
模块系统来定义您的some-file.js
文件中的模块
/**
* @providesModule SomeModuleName
*/
export function sum(x, y) {
return x + y;
}
并将其用作
jest.dontMock('SomeModuleName');
const sum = require('SomeModuleName').sum;
describe('sum', function() {
it('adds 1 + 2 to equal 3', function() {
expect(sum(1, 2)).toBe(3);
});
});
更多信息here并查看Facebook repo中的示例