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
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”)
来测试主页中的一个字段,但它没有通过。由于它确实通过了只有重定向
的地方,而不是重定向
和呈现
,我怀疑水豚是在呈现的电子邮件模板中寻找文本,而不是重定向的主页,我该如何更改?