Я настраиваю тесты для уже существующего кода.Я хочу протестировать создание записи в базе данных для объекта, в частности, как должен вести себя метод create (), когда заданы неверные параметры.При попытке создать объект с преднамеренно неправильными параметрами, метод Loopback upsert () - (который используется нашим create () - Method) выдает ошибку, прежде чем я могу утверждать поведение.
Мы используем Node, Express и Loopback для Backend и Mocha с Chai в качестве набора для тестирования.Мы используем опцию Loopback «validateUpsert: true» в модели объекта, которая предположительно приводит к возникновению вышеупомянутой ошибки.
Базовая модель выглядит примерно так:
{
"name": "Field",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"numberOfSpots": {
"type": "number",
"required": true
}
}
Так что мой тестовый пример в Mocha похож на приведенный ниже код.Обратите внимание на комментарий рядом с numberOfSpots:
it('should return null upon entering false data', async() => {
// Given
const givenFieldData = {
numberOfSpots: 'two' // Using text instead of a number
}
// When
const newField = await Field.create(givenFieldData);
// Then
assert.isNull(newField);
});
Field.create(givenFieldData)
в основном вызывает этот метод Loopback после преобразования givenFieldData
в Field
-Object:
FieldModel.upsertWithWhere(where, Field)
.catch(error => logger.error(error))
.finally(return null);
Теперь я ожидаючто утверждение выполняется, но на самом деле оно никогда не выполняется.Блок finally также не выполняется.Консоль регистрирует что-то вроде этого:
ERROR (ValidationError/3844 on M): The instance `Field` is not valid. Details: `numberOfSpots` can't be blank (value: NaN).
Теперь тест не пройден, хотя поведение правильное, т.е. объект не был создан.Мне нужно найти способ проверить, не был ли объект (правильно) не создан, и это должно быть отражено при прохождении теста.Спасибо!