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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
subject { page }

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

失败,错误为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
def full_title(page_title)
  base_title = "Homewatch"
  if page_title.empty?
    base_title
  else
    "#{base_title} | #{page_title}"
  end
end

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"<!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 04:37:48

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

复制
相关文章
Docker拉取镜像失败
在下是首席架构师
2023/06/16
2K0
常见拉流卡顿总结
直播卡顿对观众来说是不太好的一个体验,那么如何尽量避免呢,小编给大家分享一些经验。
陈鸿涛-hongtchen
2020/11/01
3.7K0
常见拉流卡顿总结
Docker 拉取镜像失败处理
如果母机的网络环境是需要配置代理才能够访问互联网的话,那安装docker后,去拉取镜像大概率会失败。 类似如下的错误:
艳龙
2021/12/16
11.2K0
Docker 拉取镜像失败处理
Rails测试:Rspec
One: Case Study Debug sucks, and test rocks! If you use rails, then you should know how to use RSpec to test your rails app. I use a simple case to practice basic RSpec. If you want practice, go to check the saasbook/bdd-tdd-cycle practice at the end of th
用户2183996
2018/06/28
1.1K0
2018上海PTC——亚洲国际动力传动与控制技术展览会
机械和电气传动、流体传动与控制、机械零部件、紧固件、弹簧、轴承、内燃机和燃气轮机的国际盛会
用户2465578
2018/06/27
6670
python 获取英文人名翻译
我的CSDN博客地址 https://michael.blog.csdn.net/
Michael阿明
2022/01/07
1.7K0
python 获取英文人名翻译
解决Docker镜像拉取失败问题
报错信息: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
程序员云帆哥
2022/09/28
10.4K0
解决Docker镜像拉取失败问题
git Lab ssh方式拉取代码失败
使用http方式没问题, 但是用ssh方式设置repository URL 提示资源库不存在.
用户7798898
2020/09/27
1.7K0
git Lab ssh方式拉取代码失败
巴斯卡三角形(杨辉三角)
参考资料: 1. 巴斯卡三角的来历 2. 巴斯卡是十七世纪的一位法国数学家,也是历史上第一位发明了加法计算机的人!他造出“巴斯卡三角形”的方法是这样的:先在纸上写出一行和一列的“ 1 “ ,然后在各个位置中填入数字,每一个位置上的数字都是它上面一个数和左边一个数的和。接下来,把这个表右转45 ° ,放正了,就得到上面的数字三角形了! 3. 现在的数学书里,都把这个三角形称为“巴斯卡三角形” ,事实上,在南宋杨辉所写的数学书里面,早就介绍了由北宋贾宪所创造出来的相同三角形了(所以在中国称为“贾宪三角”或“杨辉三角” ) ,时间可要比巴斯卡早了600年。 组合数计算方法:C(n,m)=n!/[m!(n-m)!]
谙忆
2021/01/19
8330
巴斯卡三角形(杨辉三角)
Effective Testing with RSpec 3(介绍)
我们的测试再次被打破!”“为什么套件需要这么长时间才能运行?”“无论如何,我们从这些测试中获得了什么价值?”
不知雨
2018/09/06
2K0
皮一皮:这解释...没毛病!
往期推荐 皮一皮:一直情绪不稳的原因终于找到了! 皮一皮:这是做一个海王的基本素质??? 皮一皮:这样的女生还有吗? 皮一皮:叫车就要叫这样的,霸气... 皮一皮:中国好男友? 推荐关注我们的视频号 “程序员关爱计划” 拯救不开心行动 从你的关注开始 💕💕💕💕💕💕
程序猿DD
2023/04/04
1660
皮一皮:这解释...没毛病!
CentOS7.3网卡启动失败
解决办法 关闭NetworkManager套件,并设置开机不自启动 # systemctl stop NetworkManager # systemctl disable NetworkManager
宝耶需努力
2022/12/13
1.5K0
CentOS7.3网卡启动失败
TKE集群pod镜像拉取失败定位思路
一般我们在部署服务的时候会遇到一些镜像拉取失败的问题,这里简单讲述下如何定位解决这类镜像拉取失败的问题,大致的定位思路如下
聂伟星
2020/09/06
2.2K0
Jenkins pipeline 拉取gitlab项目大文件失败
pipeline都基本是一个模板,参照:Jenkins Pipeline演进。最近新上了一个项目。springcloud的聚合工程,8个子项目。本来是要求程序直接提交代码到gitlab,我直接自己maven打包,并且docker build构建镜像并发布到线上环境。但是程序喜欢个人提交jar包(每个jar包100m左右)。gitlab比较老只开通了http方式,并没有开通ssh方式。开始还好jenkins还能发布,昨天晚上直接不能发布了....报错如下:
对你无可奈何
2021/07/30
1.3K0
BCrypt--密码加密和匹对
任何应用考虑到安全,绝不能明文的方式保存密码。密码应该通过哈希算法进行加密。 有很多标准的算法比如SHA或者MD5,结合salt(盐)是一个不错的选择。 Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用BCrypt强哈希方法来加密密码。
名字是乱打的
2022/05/13
1.1K0
C++经典算法题-巴斯卡三角形
3. 巴斯卡三角形 代码示例 #include <stdio.h> #define N 12 long combi(int n, int r){ int i; long p = 1; for(i = 1; i <= r; i++) p = p * (n-i+1) / i; return p; } void paint() { int n, r, t; for(n = 0; n <= N; n
cwl_java
2022/11/30
1870
C++经典算法题-巴斯卡三角形
皮一皮:这样的邻居。。。
好心办坏事啦~~~~没脸待下去了~~求搬家
程序猿DD
2023/04/04
1660
皮一皮:这样的邻居。。。
世界杯11大数据:20位前冠军出战
随着全部32支参赛队的23人名单基本敲定,国际足联官方列出本届杯赛的11大数据,本届杯赛共有236人参加过世界杯,包括20位前冠军,最年轻及最年长的球队分别是加纳和阿根廷,所有球员的平均年龄为27岁零5个月等等。 236:总共有236名球员有参加世界杯的经历,其中西班牙为最,共有16人,乌拉圭及喀麦隆分别以15人及13人列在第2及第3位。时间跨度最大的是哥伦比亚门将蒙德拉贡,他出战过1994年世界杯,也成为继墨西哥的卡尔巴哈尔及马特乌斯之后,又一位第5次出战世界杯的球员。
小莹莹
2018/04/19
6120
世界杯11大数据:20位前冠军出战
EasyNVR拉公网RTSP流失败问题调试和解决
经常使用EasyNVR产品的用户都知道,作为音视频行业互联网直播产品,EasyNVR主要功能在于通过RTSP/ONVIF协议,接入前端音视频采集设备,通过EasyNVR软硬件产品将拉取过来的音视频流转化给适合全平台播放的RTMP、HTTP-FLV、HLS格式,极大的方便用户进行网页直播、微信直播及接入自身业务平台。
TSINGSEE青犀视频
2021/07/09
6350
EasyNVR拉公网RTSP流失败问题调试和解决
EasyNVR拉公网RTSP流失败问题调试和解决
经常使用EasyNVR产品的用户都知道,作为音视频行业互联网直播产品,EasyNVR主要功能在于通过RTSP/ONVIF协议,接入前端音视频采集设备,通过EasyNVR软硬件产品将拉取过来的音视频流转化给适合全平台播放的RTMP、HTTP-FLV、HLS格式,极大的方便用户进行网页直播、微信直播及接入自身业务平台。
EasyNVR
2021/07/14
4100

相似问题

RSpec2和卡皮巴拉

21

Rails + SAML + RSpec +卡皮巴拉测试

12

黄瓜,卡皮巴拉和ElementNotFound

50

卡皮巴拉的.closest()

30

卡米纳里和卡皮巴拉冲突

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文