unit-testing - 通过包含 `--runInBand` 修复了 Jest 测试的问题,但我对为什么感到困惑
问题描述
我有一个使用 Node 和 Express.js 的后端服务器,并且我使用 Jest 作为我的测试框架。我有一个我无法弄清楚的问题。先分享一下我的代码:
// user.model.test.ts
describe('User model test', () => {
let connection: Connection;
beforeEach(async () => {
connection = await createConnection(ormConfig);
});
afterEach(async () => {
connection.close();
});
it('should not create a user with the same email', async () => {
await User.create({
username: 'bar',
email: 'foo@gmail.com',
password: 'password'
}).save();
const user2 = User.create({
username: 'foo',
email: 'foo@gmail.com',
password: 'password'
});
await expect(user2.save()).rejects.toThrowError();
});
}
正如你在这里看到的,我正在从我的开发数据库创建一个单独的连接,这里的钩子附加到 test_db。
我对控制器进行了另一项测试。
user.controller.test.ts
describe('Get all users', () => {
let connection: Connection;
beforeEach(async () => {
connection = await createConnection(ormConfig);
});
afterEach(async () => {
connection.close();
});
it('should return status code 200', async (done) => {
User.create({
username: 'test',
email: 'foobar@gmail.com',
password: 'password'
});
const res = await rekwest.get('/api/v1/users');
expect(res.status).toBe(200);
// console.log(res.st);
done();
});
});
和我在这里做的一样。我正在创建一个测试并附加到 test_db 并期待一个不同的连接池。
现在控制器上的错误很奇怪User table already exists
。在模型上我有一个错误test_db doesn't exists
。现在,如果我删除了控制器测试中的钩子,错误就会消失,但我无法测试控制器。
所以我找到了一个关于如何使用 Jest 测试 MongoDB 的链接,我们有相同的想法,但我没有runInBand
. 所以我添加了它jest --runInBand
,出于某种原因,它修复了我的错误。有人可以向我解释发生了什么吗?在 Jest 文档中,基本上是说您的测试运行速度会快 50%,但我不需要,还是我不需要?
解决方案
推荐阅读
- r - R - 如何从表达式中提取对象名称
- list - 如何制作 5D 列表
- random - 检查二进制序列中的噪声的随机性
- python-3.x - 使用 Python 更新 AD 中的 LDAP 属性
- python - 我可以拆分 message.content 并打印一些信息吗?不和谐.py
- angular - 单元测试动态方法调用Angular
- github - 当我在 GitHub 上填写拉取请求表单时,如何链接问题?
- r - 在 r 中展开列并按 ID 计数
- javascript - a[x] && ax 有什么区别
- sql-server - 您可以在一个 SSMS 选项卡中并行运行 2 个 SQL 查询吗?