15

如果我<%= link_to "Help", help_path %>在视图文件中有类似的内容,如何使用 rspec 测试以下内容?

  1. 它去help_path
  2. 内容为“帮助”。

我目前正在使用水豚。


编辑

虽然下面的答案可以工作,但我想我找到了一种更简单的方法。

describe "some link on whatever page" do
  subject { page }
  before { visit whatever_path }
  it { should have_link('Help', href: help_path) }
end
4

4 回答 4

5

如果您使用的是水豚,那么

my_link = find(:css, "a:contains('Help')")
my_link.click

and get page status, should be 200 or simply check


my_link.href

但您也可以简单地将路由规范添加到 rspec 中的集成规范中。像这样总是确保这条路线存在

describe HelpController do

  it "should have proper routes" do
    {:get => "/halp/772/parser/18/edit" }.should be_routable
    {:post => "/halp/772/parser" }.should be_routable
    {:delete => "/halp/772/parser/18" }.should be_routable          
  end

end
于 2012-05-18T08:04:27.877 回答
2

您的文件可能如下所示:

require 'spec_helper'

feature "Help" do
  scenario "creation" do
    visit help_path                         # access your help path
    page.should have_content("Help")        # verify content
  end
end

如果你需要一些关于 Capybara 测试的帮助,你可以在这里找到一些帮助: Railscasts #257 Request Specs and Capybara or Capybara repo at Github

于 2012-05-18T08:01:24.203 回答
2

使用have_tag匹配器。是一个备忘单。

response.should have_tag("a[href$=#{help_path}]", :text => "Help")

PS你读过rails guides吗?

于 2012-05-18T08:03:36.980 回答
0

click_link "Help"

水豚备忘单要点:https ://gist.github.com/zhengjia/428105

于 2015-03-24T17:50:14.353 回答