कॉल करता है मैं विरासत कोड पर थोड़ा सा काम कर रहा हूं। मैं एक परीक्षण है कि NullPointerException को पकड़ने के लिए माना जाता है लिखा हैमॉकिटो जब()। फिर रीटर्न विधि को अनावश्यक रूप से
@Test(expected=NullPointerException.class)
public void checkXRequirement_NullProduct_AddAction_ShouldThrowNullPointerException() throws CustomException {
Site site = mock(Site.class);
Product product = null;
when(BasketHelper.getAction(request)).thenReturn(0);
when(BasketHelper.getActionProduct(site, request)).thenReturn(product);
BasketHelper.requiresX(request, site);
}
प्रासंगिक तरीके और चर (यह शून्य वस्तु से एक विधि कॉल करने के प्रयास कर रहा है के लिए):
public static final int ACTION_ADD = 0;
public static final int ACTION_DELETE = 1;
protected static int getAction(HttpServletRequest a_request) {
String sBuyProduct = a_request.getParameter(ATTRIBUTE_NAME_BUY_PRODUCT);
String sBuyProduct = a_request.getParameter(ATTRIBUTE_NAME_BUY_PRODUCT);
if (sBuyProduct != null) iAction = ACTION_ADD;
else (sDelProduct != null) iAction = ACTION_DELETE;
return iBasketAction
}
protected static Product getActionProduct(Site a_site, HttpServletRequest a_request) {
String sBuyProduct = a_request.getParameter(ATTRIBUTE_NAME_BUY_PRODUCT);
String sDelProduct = a_request.getParameter(ATTRIBUTE_NAME_DEL_PRODUCT);
String sProduct = null;
switch (getBasketAction(a_request)) {
case BASKET_ACTION_ADD:
sProduct = sBuyProduct;
break;
case BASKET_ACTION_DELETE:
sProduct = sDelProduct;
break;
}
int iProductId;
try {
iProductId = Integer.parseInt(sProduct);
} catch (NumberFormatException nbrEx) {
return null;
}
Product prod = getProductById(iProductId);
if (prod.isMasterProduct()) {
prod = getChildProduct(prod, a_site, a_request);
}
return prod;
}
public static boolean requiresX(HttpServletRequest request, Site site) throws CustomException {
try{
if (getAction(request) == ACTION_ADD) {
Product prod = getActionProduct(site, request);
return prod.getType().isRequiredX();
}
} catch(NullPointerException exception) {
log.error("Error Message", exception);
}
return false;
}
चलने के JUnit परिणाम
java.lang.Exception: Unexpected exception, expected<java.lang.NullPointerException> but was<org.mockito.exceptions.misusing.WrongTypeOfReturnValue>
Caused by: org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
Integer cannot be returned by getParameter()
getParameter() should return String#
मैं नादुस्र्स्ती से समझना है कैसे जब() thenReturn वह काम करने के लिए माना जाता है। परीक्षण के स्टैक ट्रेस के साथ एक विफलता है फिर? मैं सिर्फ 0 को वापस करने के लिए एक्शन प्राप्त करना चाहता हूं और जब भी इसे कॉल किया जा रहा है तो उसे वापस करने के लिए एक्शन प्रोडक्ट प्राप्त करें। स्पष्ट रूप से प्राप्त करें पैरामीटर() कहा जाता है और मुझे नहीं पता कि वास्तव में क्यों।
क्या आप 'getProduct() 'दिखा सकते हैं? –
अन्य समाचारों में .... मैं देख सकता हूं कि आप किसी समस्या को दोहराने के लिए इस तरह के परीक्षण क्यों लिखेंगे। हालांकि, यहां वास्तविक परीक्षण यह सत्यापित करना चाहिए कि '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' जब तक आपका विरासत कोड कोड प्रवाह को नियंत्रित करने के लिए नाप का उपयोग नहीं कर रहा हो?किस मामले में - बाहर भी चीर। – OceanLife
मुझे लगता है कि आप सही हैं। Requx विधि में स्थिति बदलना शायद एक अच्छा विचार है। –