У меня есть запрос спецификации, которая выглядит следующим образом:Лучший способ написать эту спецификацию запроса?
describe "Registering from the main page" do
before(:each) do
fill_in "username","my_username"
fill_in "password","my_password"
fill_in "password_confirmation","my_password"
click_button "Register"
end
it "should have created a new user" do
User.count.should == 1
end
it "should have changed the message on the homepage" do
find("#element").value.should == "You registered!"
end
# ... other tests like this
end
Первый вопрос, как я могу убедиться, что у меня есть 0 пользователей перед отправкой формы?
Во-вторых, что before
не совсем мне кажется, хотя он выполняет эту работу. Есть ли другой способ написать тесты для всего этого регистрационного варианта использования? Возможно, каким-то образом переформулируйте перед чем-то, или это приемлемо, как я это делаю?
ОБНОВЛЕНИЕ: Я изменил before(:all)
на before(:each)
, потому что тесты начали сбой. Тело ответа кажется неполным, когда я использую before(:all)
. Вы случайно не знаете, почему?
Что о том, что это в 'до (: каждый)' блок? Есть ли способ вытащить его оттуда? – Geo
Кроме строки 'click_button" Register "', я думаю, что код находится в нужном месте. Это подготовка для тестирования регистрации, и, похоже, она должна быть там для всех ваших примеров, поэтому 'before (: each)' is good. – tsherif
Также добавлено что-то, чтобы обратиться к вопросу 'before (: all)'/'before (: each)'. – tsherif