Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.2 控制器的Rspec测试_Ruby On Rails 3.2_Rspec2 - Fatal编程技术网

Ruby on rails 3.2 控制器的Rspec测试

Ruby on rails 3.2 控制器的Rspec测试,ruby-on-rails-3.2,rspec2,Ruby On Rails 3.2,Rspec2,我正在构建一个Rails应用程序,其中实现了忘记密码功能。我需要使用RSpec为它编写测试用例。我对RSPEC非常陌生,从教程和屏幕广播中了解了RSPEC的基本工作原理。但我不确定如何对控制器进行测试。在我的控制器方法中,若我正在从数据库检索用户,那个么我将如何使用rspec测试它。我是否提供测试rspec的虚拟数据。??请找到下面的例子 在Usercontroller.rb中 你忘记了你的通行证吗 user = User.find_by_email(params[:email]) forget

我正在构建一个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
结束

在我的密码\u重置\u规范中

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。通过电子邮件查找(参数[:电子邮件]) forgetpass.userid=user.email


请帮助我,因为我是Rspec的新手

你给自己设置的挑战是你试图一次测试太多的东西。您应该在model_规范中测试模型行为,并在控制器中测试流行为。因此,您的集成/请求规范可以测试所有功能是否协同工作,您的用户和ForgotPass单元测试可以测试当他们收到正确的消息(来自控制器)时,他们是否做了正确的事情

将这些测试分解为小部分要容易得多。单元测试模型方法“随心所欲”意味着您可以使用存根/模拟对控制器进行测试,如果您想对其进行隔离测试,或者您可以在进行请求规范测试时,确信底层模型行为是正确的