我遇到了一个问题,包括rspec的a have_selector问题:
这是我的代码:
describe "GET 'home'" do
it "returns http success" do
get 'home'
expect(response).to be_success
end
it "should have the right title" do
should have_selector("title",
:content => "Ruby on Rails Tutorial Sample App | Home")
end
end
我在顶部包含以下内容:
RSpec.describe PagesController, :type => :controller do
render_views
我的html5有以下内容:
<title>Ruby on Rails Tutorial Sample App | Home</title>
我收到一条错误消息:
故障:
1) PagesController GET 'home' should have the right title
Failure/Error: should have_selector("title",
expected #<PagesController:0x007fceef586a90> to respond to `has_selector?`
# ./spec/controllers/pages_controller_spec.rb:14:in `block (3 levels) in <top (required)>
有人可以帮忙吗?
rspec -v 3.0.2
rails 4.1.1
提前谢谢。
答案 0 :(得分:2)
默认情况下,Rspec 3不包括控制器规格中的水豚匹配器。您可以通过
更改单个规格include Capybara::RSpecMatchers
或者,在您的规范助手
中 config.include Capybara::RSpecMatchers, :type => :controller
你的下一个问题是,最近版本的水豚不允许你默认测试不可见元素的存在,并且title元素被认为是不可见的。您应该使用have_title
匹配器。
答案 1 :(得分:2)
Hollo rubyist pal!
我有这个问题,那是因为有两件事,首先我没有使用capybara gem,第二个have_selector只接受以下之一:count,:minimum,:maximum,:between,:text,:visible,:exact ,:match,:等待键并且不明白:内容。
我相信你已经解决了这个问题,但是对于那些最近开始学习Ruby on Rails并且遇到这样一个问题的人我应该说它首先将它放入你的Gemfile中的capybara gem如下:
group :development, :test do
...
gem 'capybara'
end
并运行命令
bundle install
&#13;
然后测试你的视图是否有特定的标题,在pages_controller_spec.rb文件中写
describe "GET #home" do
...
it "should have the right title" do
get :home
expect(response.body).to have_selector('title', :text => 'Ruby on Rails rocks')
end
end
我希望它会对某人有所帮助。
Cheerio!
答案 2 :(得分:0)
检查内容是查看规范... 控制器规范意味着检查响应状态/路径,渲染页面/部分,实例变量过滤器参数。