2011-08-03 9 views
10

मैं अपने जावा कोड का परीक्षण करने के लिए EasyMock का उपयोग कर रहा हूं। जिस वर्ग का मैं परीक्षण करने की कोशिश कर रहा हूं वह एक रीस्टफुल webservice API परत है। एपीआई में एक अंतर्निहित सेवा परत है जिसे एपीआई परीक्षण में मजाक किया जा रहा है। मेरी समस्या यह पता लग रही है कि मेरे editObject(ID, params...) एपीआई विधि का सही ढंग से परीक्षण कैसे करें, क्योंकि यह service.getById() दो बार कॉल करता है और प्रत्येक कॉल के साथ एक अलग ऑब्जेक्ट को वापस करने की अपेक्षा करता है।EasyMock उसी परीक्षण में कई अलग-अलग ऑब्जेक्ट्स को वापस करने की विधि

editObject(ID, params...) पहले की कोशिश करता सेवा परत से वस्तु हड़पने के लिए सुनिश्चित करें कि आईडी मान्य है बनाने के लिए (प्रथम service.getById(ID) उम्मीद करने के लिए कॉल, मूल असंशोधित ऑब्जेक्ट)। इसके बाद यह एपीआई कॉल में निर्दिष्ट पैरामीटर को संशोधित करता है, इसे सेवा में सहेजता है, और कॉलर को कॉलर को सेवा-प्रबंधित संशोधित ऑब्जेक्ट (दूसरा service.getbyId(ID) कॉल करने की अपेक्षा करने के लिए कॉल करने के लिए फिर से कॉल किया जाता है) संशोधित ऑब्जेक्ट देता है)।

क्या EasyMock के साथ इसका प्रतिनिधित्व करने का कोई तरीका है? के लिए दो विधि एक ही विधि और मानकों के साथ कॉल

उत्तर

23

ज़रूर, आप दो अलग बातें कर सकते हैं। बस अपनी अपेक्षाओं को उस क्रम में घोषित करें जो आप उम्मीद करते हैं और तदनुसार प्रतिक्रियाएं स्थापित करें।

expect(mockService.getById(7)).andReturn(originalObject).once(); 
expect(mockService.getById(7)).andReturn(modifiedObject).once(); 
replay(mockService); 

.once() वैकल्पिक है, लेकिन मैं इस मामले कि यह अधिक आत्म दस्तावेज़ीकृत है में पाते हैं।

0

इस तकनीक को भी सशर्त भाव है जिसमें आप पहली शर्त को अमान्य लेकिन दूसरा एक या उपाध्यक्ष एक प्रतिकूल पारित करने के लिए चाहते हो सकता है में सहायक है।

5

आप कर सकते हैं श्रृंखला कई andReturn विधि कॉल:

EasyMock.expect(service.getById(1)) 
    .andReturn(firstObject) 
    .andReturn(secondObject); 

पहली बार service.getById1 साथ कहा जाता है और दूसरी बार secondObject तर्क के रूप में नकली firstObject वापस आ जाएगी। आप जितनी चाहें उतनी श्रृंखला ले सकते हैं और एक विशिष्ट कॉल के लिए andThrow के माध्यम से अपवाद भी फेंक सकते हैं।

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