rspec,验证实际的Expectation参数

时间:2015-09-20 02:39:42

标签: ruby-on-rails ruby rspec mocking expectations

是否可以验证模拟对象方法参数接收的实际参数?我无法进行直接比较,因为我正在使用Fabricate并将对象转换为序列化格式。

例如:

expect(user).to have_received(:add).with(valid_user())

所以在这种情况下valid_user()会接受参数,验证并返回一个布尔值,以验证有效值是否传递到user.add()

可以这样做吗?

到目前为止,我一直在阅读关于参数匹配器的https://github.com/rspec/rspec-mocks中的文档

编辑:在我的具体情况下,参数是一个非常大的字符串。我想通过对字符串运行正则表达式来验证字符串是否有效。所以我想通过一个只返回true / false的验证方法运行参数。

1 个答案:

答案 0 :(得分:1)

您可以使用带有()的自定义匹配项,如规范文档https://relishapp.com/rspec/rspec-mocks/docs/setting-constraints/matching-arguments#using-a-custom-matcher

中所示