我有一個方法,我想測試一個特定的對象正在調用。然而,識別這個對象有點複雜,因爲我對這個對象的特定實例不感興趣,而是符合某些條件。複雜的RSpec參數測試
例如,我的代碼可能是這樣的:
some_complex_object = ComplexObject.generate(params)
my_function(some_complex_object)
而在我的測試中,我要檢查
test_complex_object = ComplexObject.generate(test_params)
subject.should_receive(:my_function).with(test_complex_object)
但我肯定知道,比較some_complex_object
和test_complex_object
當ComplexObject#==
將返回false
因爲這是期望的行爲(其他地方我依靠標準==
行爲,所以不想超載它爲ComplexObject
)。
我認爲這是一個問題,我發現自己需要編寫這樣的測試,並且寧願重新構造代碼,以便我不需要編寫這樣的測試,但不幸的是這個測試更大這個任務需要重寫很多現有的代碼,因此是一個長期的修復,我想在時間限制內完成,但現在無法完成。
有沒有一種方法可以讓Rspec在測試中的參數之間做更復雜的比較?理想情況下,我希望能夠使用塊的內容,以便可以編寫任意比較代碼。
這是否有幫助? http://apidock.com/rspec/Spec/Mocks/ArgumentMatchers/duck_type –
nope,需要做值比較,而不僅僅是檢查對象是否響應某些東西 –