0

パスワードを忘れた場合の機能が実装されている Rails アプリケーションを構築しています。RSpec を使用してテスト ケースを作成する必要があります。私は RSPEC を初めて使用し、チュートリアルとスクリーンキャストから rspec がどのように機能するかについての基本的なアイデアを得ました。しかし、コントローラーに対してどのようにテストできるかわかりません。私のコントローラーメソッドで、データベースからユーザーを取得している場合、rspec を使用してどのようにテストしますか。rspecをテストするためにダミーデータを提供しますか?? 以下の例を見つけてください。

Usercontroller.rb 内

定義忘れ_パス

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=> 'pp@gmail.com'
        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('pp@gmail.com')
     end
end

テストでは、ユーザーが存在するかどうかをテストして属性を割り当てる方法を教えてください。私の場合、 user = User.find_by_email(params[:email]) forgetpass.userid = user.email

私はRspecの初心者なので助けてください

4

1 に答える 1

0

自分で設定する課題は、一度に多くのことをテストしようとしていることです。model_specでモデルの動作をテストし、コントローラー内で実行しているようにフローの動作をテストする必要があります。したがって、統合/要求仕様では、すべてが連携して機能するかどうかをテストでき、ユーザーとForgotPassの単体テストでは、(コントローラーから)正しいメッセージを受信したときに正しいことを行うかどうかをテストできます。

これらのテストを細かく分割する方がはるかに簡単です。モデルメソッドの単体テストは、必要な処理を実行します。つまり、分離をテストする場合はスタブ/モックを使用してコントローラーをテストできます。または、実行しているときに要求仕様のテストを実行するだけで、基になるモデルの動作が正しいことを確認できます。

于 2013-03-23T02:24:48.200 に答える