【发布时间】:2015-05-27 08:07:05
【问题描述】:
对于如何编写 RSpec 3.2.x 规范来检查列表是否包含至少一个满足条件的项目,我有点不知所措。
这是一个例子:
model = Invoice.new
model.name = 'test'
changes = model.changes
expect(changes).to include { |x| x.key == 'name' && x.value == 'test' }
更改列表中也会有其他(自动)更改,所以我不想验证是否只有一个特定更改,我也不想依赖订购expect(changes.first)...,所以我基本上需要一个指定列表中至少一项更改满足条件的方法。
我可以这样做:
result = changes.any? { |x| x.key == 'name' .. }
expect(result).to eq(true)
但是 rspec 失败不会给我任何有意义的输出,所以我认为必须有一个内置的方法来匹配它。
也欢迎任何其他关于如何构建测试的建议。
编辑:要清楚 - 更改是 ChangeObject 的列表,所以我需要访问他们的 .key 和 .value 方法
【问题讨论】:
标签: ruby rspec rspec-rails rspec3