【问题标题】:Jest test fails when environment is configured with webpack-hot-middleware使用 webpack-hot-middleware 配置环境时,Jest 测试失败
【发布时间】:2017-05-29 07:13:55
【问题描述】:

所以我正在运行一个非常基本的 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 吗?我有点迷茫,因为我觉得我什么都试过了。

【问题讨论】:

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


    【解决方案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);
      });
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 例如,将 "jest": { "testEnvironment": "node" } 添加到 package.json 根级别。
      猜你喜欢
      • 2017-11-28
      • 2016-05-25
      • 2019-07-16
      • 2018-11-26
      • 2017-07-06
      • 2020-06-07
      • 2018-02-26
      • 2020-05-15
      • 1970-01-01
      相关资源
      最近更新 更多