不一致Rspec的/水豚测试
我注释掉[得到“页/家”在我的routes.rb文件,重新启动我的整个测试环境和下面的测试还通过:不一致Rspec的/水豚测试
it "should contain 'This is a test'" do
get 'home'
response.body.should have_selector("p")
end
从我的理解,水豚从内存中的'浏览器'运行rspec测试。如果是这种情况,轨道路线必须存在!在注释掉我的路线之后,它仍然能够加载页面 - 我知道这一点,因为如果我删除<p>
选择器,则测试失败。修改routes.rb文件后,我重新启动了我的测试套件,但它没有什么区别。
这让我失去了对测试过程的信任,因为我有测试通过,不应该通过!
它看起来像这个片段是在一个控制器规范,它直接命中你的控制器。在最新版本的rspec 2.9.0中,糟糕的路由不会使这个例子失败。路线不在控制器规范的范围内。
好像你打算写的请求规格,应采用水豚的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,但我通常只使用那些用于不寻常的路由。
非常有趣。所以我一直在'''''''''''''''''''''''''''''''''''''''''我认为[得到'某物']称为水豚,但显然它只是Rspec。它是否正确?是的,这是一个控制器测试。 – dingalingchickenwiing 2012-03-29 19:01:21
是的,水豚增加了'visit',''click_on','fill_in'等等。看看上面链接的水豚文档中的很多例子。 – 2012-03-29 20:41:30
向我们展示完整的'_spec.rb'。也许你有'之前(:每个人)''在'某个地方''回家'。 – 2012-03-29 06:25:22