के साथ आक्रमण किए गए तरीकों के लिए मनमाने ढंग से तर्कों को पास करना मेरे पास एक नकली विधि है। जब इसे कहा जाता है, तो मैं इसे अपने सामान्य व्यवहार को कॉल करने से पहले एक और फ़ंक्शन कॉल करना चाहता हूं। की तरह कुछ:Google सी ++ मॉकिंग फ्रेमवर्क (Google मॉक) (V1.5)
EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
.WillOnce(DoAll(
Invoke(my_obj, &SomeAdditionalMethodIWantToCall),
Invoke(my_obj, &DefaultBehavior),
));
केवल समस्या यह है कि SomeAdditionalMethodIWantToCall
पैरामीटर कि सभी MockedMethod
के लिए प्रदान की एक से संबंधित नहीं की उम्मीद है। मैं उन्हें देने में सक्षम होना चाहता हूं लेकिन मैं वाक्यविन्यास से जूझ रहा हूं।
EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
.WillOnce(DoAll(
Invoke(my_obj, &SomeAdditionalMethodIWantToCall, arg1, arg2, arg3),
Invoke(my_obj, &DefaultBehavior),
));
मैं किसी भी सफलता के बिना दस्तावेज में ऐसी बात के लिए ध्यान दिया है: मैं वहाँ की तरह कुछ (नकली वाक्य रचना में) था चाहते हैं।
Using a Function or a Functor as an Action में, हमने:
Invoke(f)
,Invoke(object_pointer, &class::method)
,InvokeWithoutArgs(f)
,InvokeWithoutArgs(object_pointer, &class::method)
जो सिर्फ आगे (या नहीं) मज़ाक उड़ाया कार्य करने के लिए प्रदान की पैरामीटर जब यह कहा जाता है होगा।InvokeArgument<N>(arg1, arg2, ..., argk)
पैरामीटर में से किसी एक को कॉल करने के लिए प्रतीत होता है।
WithArg<N>(a)
औरWithArgs<N1, N2, ..., Nk>(a)
में जो मूल समारोह से पैरामीटर अग्रेषित करने के चयन करने के लिए होने लगते हैं।
मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा है लेकिन मैं यहां थोड़ा फंस गया हूं इसलिए कोई भी सुझाव मदद करेगा।
'InvokeUnrelatedFunction' कार्रवाई के साथ, मुझे बस एक कंपाइलर त्रुटि मिलती है जिसमें कहा गया है कि उस बिंदु पर 'arg1' घोषित नहीं किया गया है जहां मैं कार्रवाई का आह्वान करने का प्रयास करता हूं। इसका कारण क्या हो सकता है? – Martin
@ मार्टिन जैसा कि प्रश्न में बताया गया है, 'arg1' एक "पैरामीटर नहीं है जो' MockedMethod' को प्रदान किए गए किसी भी से संबंधित नहीं है।" यदि आप 'MockedMethod' से किसी फ़ंक्शन में तर्क पारित करना चाहते हैं, तो आप केवल' Invoke 'का उपयोग कर सकते हैं। आप 'इनवॉर्क्स' को 'WithArgs' के साथ भी जोड़ सकते हैं, जिसे आप चाहते हैं। उदाहरण के लिए Google मॉक कुकबुक का संदर्भ लें। –