9

我正在为我的应用程序使用 WebPack + React + Jest,并且我已经resolve.alias = { app: "/path/to/app" }在我的配置文件中进行了设置。

在 React 中,我可以使用此路径来执行 require("app/component") 并正确获取“/path/to/app/component.js”处的文件。

在运行 JEST 测试时,无论在测试中还是在导入的模块中,都无法识别此别名。所有这些都在运行应用程序时有效,但在使用 jest-cli 的测试时无效。

4

3 回答 3

3

jest-cli生活在一个与 Webpack 分开的世界中,所以它不能那样工作。

使用babel-plugin-module-resolver处理别名。

于 2015-04-22T19:30:17.660 回答
0

Jestpack可能会有所帮助,因为它允许您在使用 Webpack 构建测试后运行测试。

于 2015-10-19T22:01:09.240 回答
0

我使用 mocha 来测试反应,但我认为它也适用于开玩笑。

您应该使用 2 个包:mock-requireproxyquire

假设你有一个这样的 js 文件:

应用程序.js

import action1 from 'actions/youractions';   

export function foo() { console.log(action1()) }; 

你的测试代码应该这样写:

app.test.js

import proxyquire from 'proxyquire';
import mockrequire from 'mock-require';

before(() => {
  // mock the alias path, point to the actual path
  mockrequire('actions/youractions', 'your/actual/action/path/from/your/test/file');
  // or mock with a function
  mockrequire('actions/youractions', {actionMethod: () => {...}));

let app;
beforeEach(() => {
  app = proxyquire('./app', {});
});

//test code
describe('xxx', () => {
  it('xxxx', () => {
    ...
  });
});

文件树

app.js
  |- test
    |- app.test.js

首先在 before 函数中通过 mock-require 模拟别名路径,并在 beforeEach 函数中通过 proxyquire 模拟您的测试对象。

于 2015-12-14T10:07:08.060 回答