我在routes.rb文件中注释了[get“pages / home”],重新启动了我的整个测试环境以及以下测试STILL通过:
it "should contain 'This is a test'" do
get 'home'
response.body.should have_selector("p")
end
根据我的理解,capybara从内存中的“浏览器”运行rspec测试。如果是这种情况,铁路线必须存在!在评论我的路线后,它仍然可以加载页面 - 我知道这是因为如果我删除<p>
选择器,测试失败。修改routes.rb文件后,我重新启动了我的测试套件,但它没有什么区别。
这让我对测试过程失去了信任,因为我测试传递不应该通过!!
答案 0 :(得分:1)
看起来这个片段属于控制器规范,直接命中控制器。在rspec的最新版本2.9.0中,错误的路由不会使此示例失败。路径不在控制器规范的范围内。
好像你打算编写一个请求规范,它应该使用capybara的visit
方法:
# spec/requests/something_spec.rb
require 'spec_helper'
describe 'home page' do
it "should contain 'This is a test'" do
visit '/pages/home'
page.should have_content 'This is a test'
end
end
有关更多示例,请参阅capybara docs。 Rspec也支持routing specs,但我通常只将它们用于异常路由。