【问题标题】:trouble getting started with requests testing开始请求测试时遇到问题
【发布时间】:2012-08-02 23:34:47
【问题描述】:

对我温柔一点:我得了流感,我的神经突触只有少数在激活!

这是一个简单的 RSpec 请求测试:

require 'spec_helper'

describe 'Home Page' do
  it 'should mention Home' do
    get '/'
    response.body.should have_content("Home")
  end

end

太好了。有用。现在我想验证在访问主页时是否也加载了图像。我假设有一个类似于 has_content() 的图像匹配器,所以我首先去寻找 has_content() 的定义。

没有找到

https://www.relishapp.com/rspec/search?query=have_content
http://guides.rubyonrails.org/testing.html
http://api.rubyonrails.org/

但我记得 RSpec 对匹配器有很好的命名规则,所以(例如)even?() => be_even()。但即便如此,在上面搜索“内容”也没有找到任何东西。

(顺便说一句,我很确定我不是在寻找同名的 Capybara 方法,因为我正在做的是 get 而不是 visit。对吗?) em>

冒着因为太含糊而被拒绝的风险:这个方法到底是从哪里来的,我从哪里知道我还能传递给response.body.should?

【问题讨论】:

    标签: ruby-on-rails-3 rspec2 rspec-rails


    【解决方案1】:

    RSpec 请求规范使用 Capybara,因此您可以使用 get 或 visit。

    如果您只想检查页面是否有带有正确链接的<img> 元素,您可以使用:

    response.should have_selector('img', :src => '...')
    

    【讨论】:

    • 所以只是为了确保我理解:即使我做了 Rails get(而不是 Capybara visit),我仍然可以在结果 response.body 上使用 Capybara 的 have_content() 匹配器? (和have_selector() 得到的响应?)
    • 对不起,我写的有点误导。您可以同时使用get 和visit,但它们是不同的。看看这篇博文:blog.plataformatec.com.br/2012/06/… 但是你绝对可以在get 的回复中使用have_selector。
    • 对于复选标记来说已经足够了。我在 Capybara RSpec 匹配器上找到了文档,但没有太多关于如何使用它们的信息。例如,你什么时候使用response.body.should <matcher> vs response.should <matcher>?
    • 您不是第一个评论缺乏水豚匹配器文档的人。考虑到水豚的强大,我也发现它有点令人失望。
    猜你喜欢
    • 2014-01-01
    • 2017-04-21
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多