2013-02-27 2 views
0

Я создаю приложение Rails, в котором реализована функция забытого пароля. Мне нужно написать тестовые примеры, используя RSpec. Я очень новичок в RSPEC и получил основное представление о том, как работает rspec из учебника и скринкастов. Но я не уверен, как это можно проверить для контроллеров. В моем методе контроллера, если я извлекаю пользователя из базы данных, как бы я его протестировал с помощью rspec. Я даю фиктивные данные для тестирования rspec. ?? Ниже приведен пример.Rspec Тестирование контроллеров

В Usercontroller.rb

Защиту forgot_pass

user = User.find_by_email(params[:email]) 
forget_pass = ForgetPassword.new 
forgetpass.userid = user.email 
forgetpass.status = true 
forgetpass.save! 
redirect_to login_url 

конец

В моей password_reset_spec

require 'spec_helper' 
describe "PasswordResets" do 
it "emails when user requesting password reset" do 
     user=User.new 
     forget_pwd = ForgetPassword.new 
     #forget_pwd.userid.should == "prasad" 
     #forget_pwd.token.should == "123456" 
     forget_pwd.userkey = "14dd" 
     visit auth_index_path 
     click_link "Forgot Password" 
     fill_in "Email", :with=> '[email protected]' 
     click_button "Submit" 
     current_path.should eq(login_path) 
     page.should have_content("A verification mail has been sent to your email id. Click on the confirmation link to change the password") 
     last_email.to.should include('[email protected]') 
    end 
end 

В тесте, как я могу проверить, существует ли пользователь и назначить атрибутов. В моем случае, пользователь = User.find_by_email (PARAMS [: электронная почта]) forgetpass.userid = user.email

Пожалуйста, помогите, как я новичок в Rspec

ответ

0

Задача вы настраиваете себя что вы пытаетесь проверить слишком много вещей сразу. Вы должны проверить поведение модели в model_spec и просто проверить поведение потока, как вы это делаете в контроллере. Таким образом, ваша спецификация интеграции/запроса может проверить, работает ли все вместе, а тестирование вашего устройства User и ForgotPass может проверить, получают ли они правильное сообщение (с контроллера), что они делают правильно.

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

Смежные вопросы