satisfy
匹配器
satisfy
匹配器非常灵活,可以处理几乎所有你想要指定的内容。如果提供的代码块返回 true,则通过。
expect(10).to satisfy { |v| v % 5 == 0 }
expect(7).not_to satisfy { |v| v % 5 == 0 }
默认的失败消息(“预期 [实际] 满足代码块”)不是很有描述性或帮助。要添加说明,你可以提供自己的描述作为参数。
expect(10).to satisfy("be a multiple of 5") do |v|
v % 5 == 0
end
基本用法
给定一个名为“satisfy_matcher_spec.rb”的文件,其中包含
RSpec.describe 10 do
it { is_expected.to satisfy { |v| v > 5 } }
it { is_expected.not_to satisfy { |v| v > 15 } }
# deliberate failures
it { is_expected.not_to satisfy { |v| v > 5 } }
it { is_expected.to satisfy { |v| v > 15 } }
it { is_expected.to_not satisfy("be greater than 5") { |v| v > 5 } }
it { is_expected.to satisfy("be greater than 15") { |v| v > 15 } }
end
当我运行 rspec satisfy_matcher_spec.rb
则输出应包含所有这些内容
6 个示例,4 个失败 |
预期 10 不满足表达式 v > 5 |
预期 10 满足表达式 v > 15 |
预期 10 不大于 5 |
预期 10 大于 15 |