Ruby on rails 如何在控制器测试中渲染下一个视图

Ruby on rails 如何在控制器测试中渲染下一个视图,ruby-on-rails,unit-testing,rspec,capybara,Ruby On Rails,Unit Testing,Rspec,Capybara,我的控制器操作执行以下操作: 保存新发布的用户实例 向新用户发送电子邮件 重定向到用户的主页 我正在做一些快速和肮脏的视图测试,只是在控制器测试。。。不够健壮,我不想单独进入视图测试 问题是我可以测试1和2,但不能测试3。换句话说,这是我的测试代码: describe "create - with valid, new data" do it "creates a new signup" do expect{ post :create, signup: Facto

我的控制器操作执行以下操作:

  • 保存新发布的用户实例
  • 向新用户发送电子邮件
  • 重定向到用户的主页
  • 我正在做一些快速和肮脏的视图测试,只是在控制器测试。。。不够健壮,我不想单独进入视图测试

    问题是我可以测试1和2,但不能测试3。换句话说,这是我的测试代码:

    describe "create - with valid, new data" do
        it "creates a new signup" do
         expect{
           post :create, signup: FactoryGirl.attributes_for(:signup)
         }.to change(Signup,:count).by(1)
        end
    
        it "redirect to form page" do
         post :create, signup: FactoryGirl.attributes_for(:signup)
         response.should render_template "subscribe/notification_email"
        end
    
        it "redirect to form page" do
         post :create, signup: FactoryGirl.attributes_for(:signup)
         response.should render_template "homepage"
        end
    end
    

    前两次测试通过,最后一次测试失败。有没有办法告诉控制器测试转到渲染的下一个对象?或者我怎样才能测试这个

    response.should将_重定向到(“主页”),如果您测试状态代码,您会看到它正在获得302(资源临时重新定位或类似的),从技术上讲,我认为重定向状态伴随着一个稀疏的网页,该网页仅包含一个锚定标记,其中包含指向新资源位置的链接(如果您的浏览器没有自动重定向)…因此,它在应呈现_模板“主页”上失败是有意义的,因为它实际上呈现了重定向页面OK,这样就可以工作了,但是我如何测试重定向页面中的特定字段呢?即,正在通过的测试代码现在是1)
    response.should呈现模板“subscribe/notification\u email”
    2)
    response.should重定向到“homepage”
    3)我想添加第三个测试,即
    response.should有\u字段(“email”)
    来测试主页中的一个字段,但它没有通过。由于它确实通过了只有
    重定向
    的地方,而不是
    重定向
    呈现
    ,我怀疑水豚是在呈现的电子邮件模板中寻找文本,而不是重定向的主页,我该如何更改?