Mocha async afterEach не ждет
Я запускаю несколько тестов для операций CRUD, используя
sequelize
рамки.
После каждого теста я хочу удалить все записи в таблице, но этого не происходит. Когда я запускаю все тесты, тест не проходит, потому что количество записей больше 1:
Database shall be empty: expected 1 to equal 0
Когда я бегу только
create
test, он работает нормально, поэтому я полагаю, что проблема с
forEach
крюк. Когда я использую
after
крючок работает нормально, удаляя все записи из таблицы.
describe('User CRUD', () => {
before(async () => {
await db.user.sync()
})
afterEach(async () => {
// delete all records
await db.user.destroy({ where: {} })
})
// after(async () => {
// delete all records
// await db.user.destroy({ where: {} })
// })
it('create', async () => {
// start with no hosts
let usersCount = await db.user.count()
chai.expect(usersCount).to.equal(0, 'Database shall be empty')
// adding one user
const newUser1 = await db.user.create(user1)
usersCount = await db.user.count()
chai.expect(newUser1.username).to.equal('admin', 'Username does not match')
chai.expect(newUser1.password).to.equal('adminPw', 'Password does not match')
chai.expect(usersCount).to.equal(1, 'Database shall have one inserted record')
// adding second user
const newUser2 = await db.user.create(user2)
usersCount = await db.user.count()
chai.expect(newUser2.username).to.equal('user', 'Username does not match')
chai.expect(newUser2.password).to.equal('userPw', 'Password does not match')
chai.expect(usersCount).to.equal(2, 'Database shall have one inserted record')
})
it('delete', async () => {
// adding one host
const newUser1 = await db.user.create(user1)
await newUser1.destroy()
let usersCount = await db.user.count()
chai.expect(usersCount).to.equal(0, 'Database shall not have inserted records')
})
it('errors', async () => {
const createDuplicatedRole = async () => {
await db.user.create(user1)
await db.user.create(user1)
}
chai.expect(createDuplicatedRole()).to.be.rejectedWith(db.sequelize.UniqueConstraintError, 'User with same username does already exist.')
})
})
Что я делаю не так?