Я пытаюсь проверить простую проверку модели с помощью Jest. Модель выглядит следующим образом:
const { Schema, model } = require('mongoose')
const { isEmail, isAlphanumeric, isNumeric, isAlpha } = require('validator')
const userSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
validate(v) {
return isEmail(v)
}
}
})
const User = model('User', userSchema)
Затем в моем тестовом файле у меня есть следующая настройка:
const User = require("../models/user");
const invalidUser = {
name: "David",
email: "david@invalid"
};
const validUser = {
name: "David",
email: "david@example.com"
};
Теперь, когда я пытаюсь запустить тест с использованием обратных вызовов, я получаю желаемый результат (ошибка null
):
test("Should not validate user without valid email", done => {
const user = new User(invalidUser);
user.validate(err => {
expect(err).not.toBeNull();
done();
});
});
Однако, когда я реорганизую этот тест для использования async / await, он просто проходит каждый раз, даже если я изменяю invalidUser
, чтобы иметь действительный электронная почта (что должно привести к сбою теста):
test("ASYNC Should not validate user without valid email", async () => {
try {
const user = new User(invalidUser);
await user.validate();
} catch (e) {
expect(e).not.toBeNull();
}
});
Я думаю, e
неправильно заполняется ошибкой из validate()
, но почему? Спасибо!