Есть ли смысл в модульном тестировании схемы Mongoose - PullRequest
0 голосов
/ 06 сентября 2018

Для демонстрации предположим, что у меня есть следующая схема + модель:

const UserSchema = mongoose.Schema({
  userName: {
    type: String,
    required: true,
    unique: true
  }
});

const UserModel = mongoose.model("User", UserSchema);

Я намерен иметь большую схему, поэтому для упрощения обслуживания она определена в user.schema.js , тогда как соответствующая модель пользователя находится в отдельном файле.

Я рассмотрел модель с помощью модульных тестов и начал размышлять о том, чтобы сделать то же самое для модуля схемы, за исключением ... Я не уверен, есть ли точка?

Я видел, как люди тестировали свои модели / схемы с использованием фактического тестового соединения с базой данных, но это не модульный тест IMO, он больше напоминает интеграционный тест, и это другая концепция. Только для модульного теста схемы мне все равно, правильно ли работает MongoDB.

Интернет (включая SO) также обнаружил код, который проверяет проверку Mongoose. Это ближе к тому, что я хотел сделать, так как основная идея заключается в проверке наличия в схеме всех ожидаемых реквизитов и ограничений. Это будет выглядеть так:

it('should be invalid if username is empty', function(done) {
  new UserModel().validate(function(err) {
    expect(err.errors.name).to.exist;
    done();
  });
});

Если тестировать с работающей БД, можно также изменить .validate на .save.

Потом до меня дошло, что я буду здесь делать две вещи:

  1. Тестирование поведения Mongoose, которое я тоже не интересую / не намерен / не хочу делать.
  2. По сути дублирует мою схему. Если позже я решу что-то изменить в нем, мне тоже придется поменять юнит-тест.

Это похоже на модульное тестирование объекта конфигурации, и это бессмысленно, за исключением, может быть, уверенности в том, что я правильно написал свои регулярные выражения и тому подобное.

Вопросы

  1. Поэтому я решил вообще не проверять схему. Это имеет смысл, или я что-то упустил?
  2. В качестве дополнительного вопроса, считаете ли вы, что есть смысл писать тесты с подключением к БД? Это проверило бы мою схему + мангуста + монго и как-то я нахожу это излишним.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...