3
有沒有一種方法來測試一個方法被調用至少一次與參數匹配器,如果該方法被調用其他參數不同的時間。這裏有一個例子:rspec at_least曾經使用與條件不工作,因爲我期望
class A
def test(a)
puts "AAA"
end
end
it "should work" do
a = A.new
expect(a).to receive(:test).with(1).at_least(:once)
a.test 2
a.test 1
a.test 3
end
我只是擔心,試驗是用一定的PARAM至少調用一次,但我得到的預期失敗第一次測試稱與不匹配的參數。
UPDATE 的就是我想要做的比這一點更復雜的一個更好的例子......我想要做自定義對PARAMS匹配...更多的東西一樣
it "should work" do
a = A.new
expect(a).to receive(:test).at_least(:once).with(an_instance_of(Fixnum)) do |i|
expect(i).to be > 2
end
a.test 2
a.test 1
a.test 3
end
當我在過去使用摩卡時,可以將塊傳遞給with方法來評估參數。如果該塊返回false,則參數期望失敗。看起來rspec只允許你使用返回塊檢查參數(當你使用and_call_original時會被忽略)。
也沒有工作,但它會導致對象變成一個完整的模擬對象。這意味着我不能再使用and_call_original。另外,文檔說,它只適用於應啓用語法。 –
還有一件事,如果我想對傳遞給它的參數使用更復雜的期望,那麼這是行不通的。請參閱我對原始帖子的更新。 –