2014-07-15 6 views
5

मैं निम्नलिखित कोड है कि मैं एक वर्ग विधि के लिए एक कॉल उपहास करने के लिए उपयोग कर रहा हूँ है:minitest - पारित उम्मीद के लिए किसी भी तर्क

def test_calls_update_profile_job_for_a_lead 
    input = ContactInput.new valid_attributes 

    mock = MiniTest::Mock.new 

    use_case = CreateContact.new user, input, mock 

    mock.expect(:perform_async, nil, [user.id, 1, ::Contact]) 

    use_case.run! 

    assert mock.verify 
end 

समस्या यह है कि मैं विशिष्ट मूल्यों में पारित करने के लिए कर रहा हूँ है -

[user.id, 1, :: संपर्क]

परीक्षण पारित करने के लिए।

क्या कोई तरीका है कि मुझे सटीक मान निर्दिष्ट करने की आवश्यकता नहीं है या शायद कम से कम तर्क क्या हैं। मैं सटीक तर्कों की जांच नहीं करना चाहता, मैं बस यह सुनिश्चित करना चाहता हूं कि विधि को बुलाया गया था।

+0

+1 ऐसा लगता है Minitest यह असंभव * सटीक * मान निर्दिष्ट किए बिना की उम्मीद करता है कि। मेरे उपयोग के मामले में जब मैं यादृच्छिक रूप से जेनरेट की गई यूयूआईडी प्राप्त कर रहा हूं तो मैं सटीक मान कैसे निर्दिष्ट कर सकता हूं? –

उत्तर

4

docs के अनुसार:

आर्ग मामले समानता (यानी, '=== "ऑपरेटर), कम विशिष्ट उम्मीदों के लिए अनुमति का उपयोग कर की उम्मीद आर्ग की तुलना में है।

उदाहरण के लिए,

mock = MiniTest::Mock.new 
mock.expect(:perform_async, 'goodbye', [Integer, Integer, String]) 
puts mock.perform_async(1, 1, 'hello') #=>goodbye 
puts mock.perform_async(1, 1, 1) #=>MockExpectationError 
+0

शानदार। धन्यवाद – AJcodez

संबंधित मुद्दे