Эх ... Я бы сказал, что это плохая идея. Когда я смотрю на юнит-тест, я предпочитаю посмотреть, что он делает, поэтому, если у вас есть тест, который проверяет, правильно ли вытащен номер улицы, ваш тест может выглядеть следующим образом (это не зная, каково ваше намерение с функцией ):
@address = Address.parse("123 Main St, San Francisco CA")
assert_equal @address.street_number, "123"
Но если вы использовали «приспособление» (или некоторые данные, хранящиеся во внешнем файле), тест будет сложнее прочитать вам позже, а потом другому разработчику (обратите внимание, что я не использую приспособления) , Я предпочитаю factory_girl, поэтому я сделал синтаксис. Это, вероятно, неправильно, но смысл сделан):
@address = Address.parse(fixture(:address_one))
assert_equal @address.street_number, "123"
Почему вы утверждаете, что street_number равен "123"? Трудно понять, правильно ли написан тест, если проблема возникнет позже. Вы должны перейти к внешнему файлу, и это просто очень большая боль в заднице.
Я считаю, что внешние приборы (опять же, я использую factory_girl) полезны для установки определенных состояний объектов, таких как:
Factory.define :user do |f|
f.sequence(:email){ |n| "testemail#{n}@example.net" }
f.first_name "Test"
f.last_name "User"
end
Factory.define :admin_user, :parent => :user do |f|
f.admin true
end
Таким образом, я всегда могу создать admin_user для теста, когда мне нужно, и если определение того, что делает пользователя администратором, меняется, проще сделать все тесты, которые полагаются на него, корректными. Однако это сделано не для проверки конкретного поведения атрибута @ user.admin, а для таких вещей, как разрешение, например «может ли пользователь получить доступ к этому действию?»
Если бы я позже использовал фабрику: user и хотел проверить специфическое поведение атрибута 'email', я бы не стал полагаться на то, что поставляла фабрика. Я бы создал объект следующим образом: переопределяя поле электронной почты по умолчанию:
@user = Factory.create(:user, :email => "myemail@example.net")
Чтобы сделать тест более понятным.
Я думаю, что ваш пример неуместен, когда вы полагаетесь на строку текста в приборе, чтобы определить, как выглядят ваши утверждения.