Mockito में हम (here से लिया गया) जैसे कई रिटर्न निर्दिष्ट कर सकते हैं:gmock में लगातार रिटर्न निर्दिष्ट करने के लिए कैसे?
//you can set different behavior for consecutive method calls.
//Last stubbing (e.g: thenReturn("foo")) determines the behavior of further consecutive calls.
when(mock.someMethod("some arg"))
.thenReturn(new RuntimeException())
.thenReturn("foo");
//There is a shorter way of consecutive stubbing:
when(mock.someMethod()).thenReturn(1,2,3);
when(mock.otherMethod()).thenThrow(exc1, exc2);
वहाँ gmock के साथ किए गए एक नकली के लिए कई रिटर्न निर्दिष्ट करने के लिए कोई तरीका है? वर्तमान में मेरे पास है:
store_mock_ = std::make_shared<StorageMock>();
ON_CALL(*store_mock_, getFileName(_)).Return("file1").Return("file2");
जो संकलित नहीं करता है क्योंकि मैं gmock में एकाधिक रिटर्न नहीं समझ सकता। क्या यह gmock के साथ संभव है? यदि नहीं, तो क्या इस समस्या को हल करने का कोई और तरीका है? मैंने पाया है कि हम EXPECT
कई वापसी मान की तरह कर सकते हैं:
using ::testing::Return;...
EXPECT_CALL(turtle, GetX())
.WillOnce(Return(100))
.WillOnce(Return(200))
.WillOnce(Return(300));
हालांकि, मैं नहीं कोई भी दस्तावेज़ ON_CALL
के साथ कई रिटर्न मजाक के लिए मिल गया है।
मेरे उम्मीदों की समझ यह है कि वे वही हैं जिन्हें हम वापस आने की उम्मीद करते हैं, न कि वास्तव में नकली द्वारा क्या किया जाना चाहिए। क्या यह गलत है? आपका 'वृद्धि डमी' उदाहरण वास्तव में सहायक है। किंडा बेकार है कि कई रिटर्न परिभाषित करने का सबसे अच्छा तरीका इतना शामिल है। :( –
यदि मैं आपको सही ढंग से समझता हूं - तो हाँ। मेरा उदाहरण बहुत कृत्रिम है - हम कभी भी दावा नहीं करते कि कौन से नकल लौटते हैं - मैं यह परीक्षण यह दिखाने के लिए लिखता हूं कि यह तंत्र काम करता है। अधिक सामान्य हम कह सकते हैं कि 'EXPECT_CALL' ऐसे मामलों में जब हम उम्मीद करते हैं कि मॉक किए गए फ़ंक्शन को परीक्षण कोड के भीतर से बुलाया जाता है। "वापसी मूल्य" सेट करना आवश्यक नहीं है - उदाहरण के लिए यह अक्सर होता है कि हम शून्य कार्य को कॉल करने की अपेक्षा करते हैं .... – PiotrNycz