Ruby on rails rspec中是否有一个内置的匹配器来匹配方法&;实例到字典的值?

Ruby on rails rspec中是否有一个内置的匹配器来匹配方法&;实例到字典的值?,ruby-on-rails,rspec-rails,Ruby On Rails,Rspec Rails,我不熟悉ruby、rails和RSpec。我正在编写一个规范,它验证作为参数发送给方法的实例obj,是否满足给定字典dict,obj.==dict[key]用于字典中的所有键。我在规范中就是这样做的: Foo::BarService.should_receive(:the_message) do |obj| @dict.keys.each do |key| obj.__send__(key).should be(@dict[key]) end end 有内置的rspec匹配

我不熟悉ruby、rails和RSpec。我正在编写一个规范,它验证作为参数发送给方法的实例
obj
,是否满足给定字典
dict
obj.==dict[key]
用于字典中的所有键。我在规范中就是这样做的:

Foo::BarService.should_receive(:the_message) do |obj|
  @dict.keys.each do |key|
    obj.__send__(key).should be(@dict[key])
    end
end

有内置的rspec匹配器吗?还是一种更好、更ruby-ish或rspec/rails-ish的方式?

是否只有这样一种测试,或者这是一种常规模式,您计划进行大量测试,以断言某个接收者获得一条消息,其参数与给定字典“一致”?如果是一次性测试,最好更明确。不要使用
@dict
,只需放置所有您想要的断言:
ojb.key\u 1.should==value\u 1;obj.key_2.should==value_2
,等等。如果这种类型的测试会出现很多问题,请编写一个自定义匹配器(Google it),其中包含有用的失败消息(例如,它可以告诉您所有的键,而不仅仅是第一个键)。我已经有了@dict,因为它作为参数发送到
post:create
。这是我现在唯一的例子,我不确定它是否会再次出现。你的观点很好地理解了,解释测试要更清楚一些。