首页 > 解决方案 > 如何测试 jest + sequelize?

问题描述

晚上好,我正在尝试编写集成测试。但是,我坚持使用数据库,当我这样做时sequelize.sync({ force: true }),我得到了一些错误,它是随机的。

现在,我所有的测试都是这样的:

const CategoryModel = require('../CategoryModel'); // sequelize model

beforeAll(async () => {
  await CategoryModel.sync({ force: true });
  await CategoryModel.bulkCreate([ /* data for insert */ ]);
});

// then there are tests

Sequelize 行为怪异,随机抛出错误:

1. bulkCreate() - [SequelizeDatabaseError]: Table 'shop_test.categories' does not exist
2. bulkCreate() - [SequelizeUniqueConstraintError]: Validation error. (Duplicate entry 'spoons' for key 'categories.slug')

这怎么可能?因为.sync()使用{ force: true }删除表的方法,然后使用模式创建新表

我用选项开玩笑:

"test": "jest --runInBand --detectOpenHandles"

我究竟做错了什么?

标签: node.jsjestjssequelize.js

解决方案


推荐阅读