使用webpack-hot-middleware配置环境时,Jest测试失败

时间:2017-01-13 20:07:44

标签: reactjs express webpack jestjs webpack-hot-middleware

所以我正在运行一个非常基本的Jest测试,以测试我的一条路线是否返回200.

import request from 'supertest';
import app from './../app';

describe('GET /', () => {
  it('should render properly', async () => {
    await request(app).get('/api/testing').expect(200);
  });
});

这完全正常,然后我配置了webpack-hot-middleware,它似乎在我导入应用程序的第2行中断。

TypeError: setInterval(...).unref is not a function

  at createEventStream (node_modules/webpack-hot-middleware/middleware.js:50:17)
  at webpackHotMiddleware (node_modules/webpack-hot-middleware/middleware.js:12:21)
  at Object.<anonymous> (server/app.js:62:73)
  at Object.<anonymous> (server/test/routes.test.js:2:38)

如果我从app.js中删除以下代码,那么测试一切正常。

  app.use(middleware);
  app.use(webpackHotMiddleware(compiler));
  app.get('*', (req, res) => {
    res.write(middleware.fileSystem.readFileSync(path.join(__dirname, '../dist/index.html')));
    res.end();
  });

有人为webpack-hot-middleware配置了Jest吗?我有点失落,因为我觉得我已经尝试了一切。

2 个答案:

答案 0 :(得分:4)

您必须将testEnvironment Jest配置选项设置为nodeunref()仅存在于Node.js中。

答案 1 :(得分:1)

通过在文件顶部添加@ jest-environment docblock,您可以指定另一个环境以用于该文件中的所有测试,请参考jest documentation

/**
 * @jest-environment jsdom
 */

import request from 'supertest';
import app from './../app';

describe('GET /', () => {
  it('should render properly', async () => {
    await request(app).get('/api/testing').expect(200);
  });
});