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所提到的,如果你认为错误消息足够有用的话