Создайте хэш допустимых атрибутов, которые успешно создадут объект того типа, который вы хотите протестировать. Обычно это делается один раз перед шагом. Затем для каждого атрибута, который вы хотите проверить проверки, создайте тестовый вид вроде этого (используя синтаксис rSpec):
obj_under_test = MyModel.new(@valid_attributes)
object_under_test.email = nil
obj_under_test.should_not be_valid
В этом случае @valid_attributes
- это хеш, который вы создаете. Альтернативой этому является использование разумных фабрик для генерации ваших объектов для каждого теста. Посмотрите на FactoryGirl, Machinist, Fixjour для некоторых примеров. Итак, используя ваш пример, что-то вроде этого имеет смысл:
Вы можете довести свои тесты / спецификации до желаемого уровня детализации. Многие люди любят проверять только одну вещь в каждом случае (или «пример», на языке BDD). Таким образом, у вас может быть набор тестов, таких как «должен иметь адрес электронной почты», «должен иметь действительный адрес электронной почты, если он указан», «должен иметь адрес электронной почты в действительном домене» и т. Д.