Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 用于测试阵列的RSpec magic';没有?方法?_Ruby_Rspec_Rspec2 - Fatal编程技术网

Ruby 用于测试阵列的RSpec magic';没有?方法?

Ruby 用于测试阵列的RSpec magic';没有?方法?,ruby,rspec,rspec2,Ruby,Rspec,Rspec2,我有一个数组/可枚举,其中每个实体都是一个散列。使用RSpec测试“可枚举项中的任何项都不应具有名为'body'”的键”的最惯用方法是什么 我可以这样做: array.none? {|thing| thing.key? 'body'}.should be_true 或 …但必须有一种更精确的方法来做这件事,对吗 我似乎找不到合适的工作。答案是自定义匹配器吗?我会使用 responses.should_none{| response | response.key?'body} 在你给的两个人之间

我有一个
数组
/
可枚举
,其中每个实体都是一个
散列
。使用RSpec测试“可枚举项中的任何项都不应具有名为
'body'
”的键”的最惯用方法是什么

我可以这样做:

array.none? {|thing| thing.key? 'body'}.should be_true

…但必须有一种更精确的方法来做这件事,对吗

我似乎找不到合适的工作。答案是自定义匹配器吗?

我会使用
responses.should_none{| response | response.key?'body}

在你给的两个人之间。如果出现以下错误,这会稍微有帮助

“预期无?返回true”

你的第一个例子会说

 keys = responses.map { |response| response.keys }.flatten.uniq
 keys.should_not include "body"
“预期为False:False类为true”

我能看到的第三种选择是

 keys = responses.map { |response| response.keys }.flatten.uniq
 keys.should_not include "body"
这将产生如下错误

预期[“foo”、“bar”、“body”]不包括“body”

除此之外,看看

你可以试试


responses.should满足{| response | not response.keys.include?“body”}

另一个选项是将
be_none
语句与
be_any
转换:

responses.should_not be_any { |response| response.key? 'body' }
我假设结果等价于
any?
none?
的否定

这主要是一个问题,你觉得哪个选项是最直观的阅读方式,正如EnabrenTane所提到的,如果你认为错误消息足够有用的话