PowerMock homepage पर उदाहरण से, मैं आंशिक रूप से Mockito के साथ एक निजी विधि मजाक के लिए निम्नलिखित उदाहरण देखें:क्या PowerMock में निजी स्थैतिक तरीकों के लिए आंशिक मॉकिंग का उपयोग करना संभव है?
@RunWith(PowerMockRunner.class)
// We prepare PartialMockClass for test because it's final or we need to mock private or static methods
@PrepareForTest(PartialMockClass.class)
public class YourTestCase {
@Test
public void privatePartialMockingWithPowerMock() {
PartialMockClass classUnderTest = PowerMockito.spy(new PartialMockClass());
// use PowerMockito to set up your expectation
PowerMockito.doReturn(value).when(classUnderTest, "methodToMock", "parameter1");
// execute your test
classUnderTest.execute();
// Use PowerMockito.verify() to verify result
PowerMockito.verifyPrivate(classUnderTest, times(2)).invoke("methodToMock", "parameter1");
}
हालांकि, इस पद्धति काम करने के लिए जब निजी विधि हम नकली करना चाहते हैं स्थिर है प्रतीत नहीं होता। मैं नीचे दिए गए वर्ग के एक आंशिक नकली बनाना चाहते readfile विधि मज़ाक उड़ाया साथ:
package org.rich.powermockexample;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
import static com.google.common.io.Files.readLines;
public class DataProvider {
public static List<String> getData() {
List<String> data = null;
try {
data = readFile();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
private static List<String> readFile() throws IOException {
File file = new File("/some/path/to/file");
List<String> lines = readLines(file, Charset.forName("utf-8"));
return lines;
}
}
कृपया कोई मुझे पता है कि यह कैसे प्राप्त किया जा सकता दे सकता है?
क्यों, बिल्कुल? दूसरे शब्दों में, आप केवल GetData का मज़ाक उड़ाकर अनुकरण नहीं कर सकते हैं? –
मैं कर सकता था - लेकिन मैं देखना चाहता था कि PowerMock के साथ आंशिक नकली में निजी स्थैतिक विधियों को संभालना संभव है या नहीं। –
ओह। मुझे मैकेनिक्स देखना होगा, लेकिन AFAIK हां, बाइट-कोड मैनिपुलेशन के माध्यम से, वैसे ही, आप कन्स्ट्रक्टर को मजाक कर सकते हैं या कह सकते हैं। –