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

Chr*_*ena 4 express reactjs 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);
  });
});
Run Code Online (Sandbox Code Playgroud)

这运行得很好,然后我配置了 webpack-hot-middleware 并且它似乎在我导入 app 的第 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)
Run Code Online (Sandbox Code Playgroud)

如果我从 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();
  });
Run Code Online (Sandbox Code Playgroud)

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

小智 8

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