0

我正在构建一个实现忘记密码功能的 Rails 应用程序。我需要使用 RSpec 为其编写测试用例。我对 RSPEC 非常陌生,并且从教程和截屏视频中了解了 rspec 如何工作的基本概念。但我不确定如何为控制器测试它。在我的控制器方法中,如果我从数据库中检索用户,那么我将如何使用 rspec 对其进行测试。我是否提供用于测试 rspec 的虚拟数据。?请在下面找到示例。

在 Usercontroller.rb 中

def 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=> '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 回答