Действительно ли это необходимо для модульного теста проверки ActiveRecord?

Попробуйте:

const arr = [{
  fromX: {
    id: 1
  },
  toX: {
    id: 2
  }
}, {
  fromX: {
    id: 3
  },
  toX: {
    id: 4
  }
}]
let {
  arr1,
  arr2
} = arr.reduce((acc, {
  fromX,
  toX
}) => ({ ...acc,
  arr1: [...acc.arr1, fromX],
  arr2: [...acc.arr2, toX]
}), {
  arr1: [],
  arr2: []
})
console.log(arr1, arr2);

8
задан Mihai Limbășan 24 March 2009 в 08:03
поделиться

4 ответа

Проверки по сути должны быть trustable, но можно хотеть проверить, присутствует ли проверка.

Помещенный, другими словами, хороший способ протестировать что-то состоит в том, как будто это был черный квадрат, абстрагируя тесты от реализации, так например, у Вас может быть тест, который проверяет, что модель человека не может быть сохранена без имени, но не заботится о том, как класс Человека выполняет ту проверку.

15
ответ дан 5 December 2019 в 07:37
поделиться

Должно быть достаточно признать, что библиотеки, такие как ActiveRecord лучше протестированы разработчиками, чем они когда-нибудь будут Вами: для них это - первоочередная задача, для Вас это на высоте тангенциальное.

Но это вовсе не значит не будет ошибок - я нашел маленький адаптером SQL Server MS однажды давным-давно - но вид теста, который Вы, вероятно, будете реализовывать, очень вряд ли выставит их, поскольку они, скорее всего, будут пограничными случаями. При нахождении ошибки, конечно, вероятно, очень полезно, если Вы сообщаете об этом с тестовым сценарием, который выставляет его!

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

В целом Вы должны тесты записи на код, который Вы пишете сами: если Вы живете или пытаетесь жить в мире TDD, тесты должны быть записаны прежде. Если Ваши модели имеют правила проверки затем, необходимо почти наверняка записать тесты, чтобы гарантировать, что правила присутствуют. В большинстве случаев тесты будут тривиальны, но они действительно будут полезны, если строка непреднамеренно будет удалена некоторое время в будущем...

4
ответ дан 5 December 2019 в 07:37
поделиться

Как Mike записал, по крайней мере необходимо протестировать это, проверка существует. Это - просто немного двойной бухгалтерии, бухгалтерской (проверка работоспособности), которую достаточно легко сделать.

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

class Person < ActiveRecord::Base
  validates_format_of :email,
      :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end

Да, проверки хорошо протестированы и достаточно надежны. Но Ваше корректное использование проверок - то, что Вы хотите проверить.

3
ответ дан 5 December 2019 в 07:37
поделиться

В качестве примечания, в заметке Райана Бигга в блоге has_and_belongs_to_many double insert упоминается, что кто-то столкнулся с ошибкой в ActiveRecord (правда, не связанной с валидацией). Как он отмечает, не стоит думать, что в Rails не может быть ошибки, потому что мы знаем, что для Rails открыто 900 тикетов.

Но да, основная причина написания теста - это проверка правильности использования ActiveRecord.

0
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: