首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RSpec和卡皮巴拉匹配器失败

RSpec和卡皮巴拉匹配器失败
EN

Stack Overflow用户
提问于 2014-11-19 12:03:53
回答 1查看 137关注 0票数 0

在这个问题上我已经挠了几个小时的头,最终需要放弃并询问。至少在此期间我学到了更多关于RSpec和Capybara的知识,但显然还不够。

代码语言:javascript
运行
复制
subject { page }

describe "Help page" do
  before { visit help_path }
  it { should have_valid_header_and_title('Help', 'Help') }
end

失败,错误为

代码语言:javascript
运行
复制
expected #<Capybara::Session> to have valid header and title "Help" and "Help" ./spec/features/static_pages_spec.rb:18:in `block (3 levels) in <top (required)>'
-e:1:in `load'
-e:1:in `<main>'

我有一个匹配have_valid_header_and_title的匹配器:

代码语言:javascript
运行
复制
RSpec::Matchers.define :have_valid_header_and_title do |heading, page_title|
  match do |page|
    if (heading) then
      expect(page.body).to have_selector('h1', text: heading)
    end
    expect(page.body).to have_selector('title', text: full_title(page_title))
  end
end

和一个用于full_title的助手函数:

代码语言:javascript
运行
复制
def full_title(page_title)
  base_title = "Homewatch"
  if page_title.empty?
    base_title
  else
    "#{base_title} | #{page_title}"
  end
end

最后,这是page.body的组成部分(使用插入调试的打印):

代码语言:javascript
运行
复制
"<!DOCTYPE html>\n<html>\n<head>\n  <title>Homewatch | Help</title>...

调试时,我看到full_title返回"Homewatch | Help“,它应该与title元素匹配,并且有一个包含"Help”的h1元素。所以它应该会通过!

我试过page.should和page.body.should而不是expect(page.body).to,我试过has_selector?这只会给出一个未定义的名称错误,以及其他各种情况。

使用rails 3.2.18、rspec-rails 3.1.0、capybara 2.4.4和capybara-webkit 1.3.1

我开始怀疑某个地方的版本不兼容。

EN

回答 1

Stack Overflow用户

发布于 2014-11-19 12:37:48

我想通了。它是这个logged issue的结果。

问题是title元素不会被一些web驱动程序发现(它被认为是不可见的)。在Capybara通过添加一个visible:切换到have_selector和has_selector修复了这个问题。我将我的匹配器更改为:

代码语言:javascript
运行
复制
RSpec::Matchers.define :have_valid_header_and_title do |heading, page_title|
  match do |page|
    if (heading) then
      expect(page.body).to have_selector('h1', text: heading)
    end
    Capybara.string(page.body).has_selector?('title', text: full_title(page_title), visible: false)
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27008746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档