2011-12-27 18 views
20

पर कोई विधि नहीं बुलाया जाएगा, मैं कुछ माफ की स्थिति में किसी भी विफलता के मामले में परीक्षण करना चाहता हूं, Google mock का उपयोग करके। तो कोड होना कुछ की तरह:google mock: मैं कैसे "EXPECT" कर सकता हूं कि नकली

auto mocObj = new MockObj; 
EXPECT_NO_METHOD_CALL(mocObj); //this is what I'm locking for 

auto mainObj = new MainObj(mocObj , ......and other mocks); // here I simulate a fail using the other mock objects, and I want to be sure the no methods are called on the mockObj 
+0

कोई कॉल नहीं होने की उम्मीद है प्रश्न: आप अपनी ऑब्जेक्ट्स को नए क्यों कर रहे हैं? यह अनावश्यक है ... –

उत्तर

14

एक StrictMock बनाएं; कोई अप्रत्याशित विधि कॉल विफलता होगी।

30

स्पष्ट रूप से यह बताने की कोई आवश्यकता नहीं है कि कोई भी तरीका नहीं कहा जाएगा। यदि आप लॉगिंग स्तर को काफी अधिक सेट करते हैं, तो आपको एक विधि मिलनी चाहिए यदि कोई विधि कहा जाता है (यदि कोई उम्मीद निर्धारित नहीं है)।

अन्य तो, आप उम्मीदों इस तरह सेट कर सकते हैं:

EXPECT_CALL(mockObj, Foo(_)).Times(0); 
सभी तरीकों पर

+1

यही वह है जो मुझे अपने परीक्षण में चाहिए। लेकिन ध्यान दें, सही नाम 'टाइम्स' है, जो पूंजी से शुरू होता है। – demi

+0

रेफरी: https://github.com/google/googletest/blob/master/googlemock/docs/FrequentlyAskedQuestions.md#how-can-i-assert-that-a-function-is-never-called –

1

अपने सभी वर्ग विधियों के लिए बिल्कुल (0) का उपयोग करें।

कार्डिनालिटी शून्य पर सेट हो जाएगा, इसलिए आपको

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