使用 webpack-hot-middleware 配置环境时,Jest 测试失败
Posted
技术标签:
【中文标题】使用 webpack-hot-middleware 配置环境时,Jest 测试失败【英文标题】:Jest test fails when environment is configured with webpack-hot-middleware 【发布时间】: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 吗?我有点迷茫,因为我觉得我什么都试过了。
【问题讨论】:
【参考方案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 配置选项设置为node
。 unref()
仅存在于 Node.js 中。
【讨论】:
例如,将 "jest": "testEnvironment": "node" 添加到 package.json 根级别。以上是关于使用 webpack-hot-middleware 配置环境时,Jest 测试失败的主要内容,如果未能解决你的问题,请参考以下文章
用 express + webpack-dev-middleware/webpack-hot-middleware 替换 webpack-dev-server
webpack-dev-middleware 和 webpack-hot-middleware 实现express全栈热更新。
webpack-dev-server怎么配置,实现实时自动刷新