让开玩笑的路径更优雅

时间:2015-07-30 07:17:30

标签: javascript jestjs

目前,我正在使用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()都使用当前测试路径作为根路径。

非常感谢提前

1 个答案:

答案 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中的示例