首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RSpec .to be_empty引发ArgumentError“expect语法不支持运算符匹配器”

RSpec .to be_empty引发ArgumentError“expect语法不支持运算符匹配器”
EN

Stack Overflow用户
提问于 2016-09-06 21:41:06
回答 1查看 590关注 0票数 0

我正在使用Ruby Cucumber来测试一个应用程序。我的一个步骤定义是这样做的:

代码语言:javascript
运行
复制
Then(/^all of my (\.\S+) should not have the below fields:$/) do |path,table|
  #path is my api, table is the fields list I'm sending through cucumber feature file and @result is the json resonse
  expect(JsonPath.on(@result.body,path).flatten.map(&:keys).flatten.uniq & table.raw.flatten).to be_empty
end

令人惊讶的是,这已经开始引发一个错误

代码语言:javascript
运行
复制
The expect syntax does not support operator matchers, so you must pass a matcher to `#to`. (ArgumentError)

在我新开的git分店里。即使是现在,主分支也不会为这行代码引发任何错误。

我尝试在new分支中搜索与此相关的任何代码差异,但什么也找不到,甚至gem版本中也没有任何变化。

以下是我尝试过的一些方法:

代码语言:javascript
运行
复制
puts JsonPath.on(@result.body,path).flatten.map(&:keys).flatten.uniq & table.raw.flatten
#[]
var = JsonPath.on(@result.body,path).flatten.map(&:keys).flatten.uniq & table.raw.flatten
puts var.class
#Array

因此,我的&操作产生了一个空数组,即[],我在该数组上应用了rspec匹配器.to be_empty。具有来自JSON的相同值的相同代码在一个分支中工作,而在另一个分支中不起作用。这不是与机器相关的错误,因为不同机器上的相同分支会引发此错误。

我甚至在这个新分支上更新了我的RSpec gem版本,并尝试了一下,但错误仍然存在。我无法确定此失败的根本原因。帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-09-11 00:28:24

我尝试在新分支中搜索与此相关的任何代码差异,但什么也没有找到,甚至在gem版本中也找不到任何变化。

如果当你在不同的计算机上使用相同的gem版本来回切换时,它是有效的,那么这个差异中的某些东西就是导致问题的原因,无论你认为这种可能性有多不可能。

开始筛选diff,如果提交次数较多,则使用git bisect,或者有选择地将损坏的diff应用于正在运行的diff,直到找到损坏的代码。

作为一个随机猜测:你是在定义一个empty方法吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39350512

复制
相关文章

相似问题

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