我正在使用PowerMocking for JUNIT,而Iam则是PowerMock的新手。
我想模拟一个非静态的类。
课程方案如下:
public class Export extends MyUtil implements ExportFormatting<DeptSummaryByDCDTO, LmReportsInputDTO>{
public String createPDF(List<DeptSummaryByDCDTO> summaryDtoList, LmReportsInputDTO inputDto){
}
public String createPDF(Map<String, DeptSummaryByDCDTO> paramMap,
LmReportsInputDTO paramK) {
}
}
调用类如下。
public static Response getMultiplePackSku{
filePath = new Export(inputDto).createPDF(resultList,null);
}
问题是,
我正在尝试使用powermock测试上面的类。
有人可以告诉你如何模拟 filePath .....
这一行答案 0 :(得分:2)
您需要先模拟构造函数并返回Export
模拟。在返回的模拟上,您需要记录对createPDF
的调用。棘手的部分是构造函数嘲弄。我会给你一个例子,希望你能得到所有这些:
@RunWith(PowerMockRunner.class) // This annotation is for using PowerMock
@PrepareForTest(Export.class) // This annotation is for mocking the Export constructor
public class MyTests {
private mockExport;
@Before
public void setUp () {
// Create the mock
mockExport = PowerMock.createMock(Export.class)
}
@Test
public void testWithConstructor() {
SomeDtoClass inputDto = PowerMock.createMock(SomeDtoClass.class);
PowerMock.expectNew(Export.class, inputDto).andReturn(mockExport);
PowerMock.replay(mockExport, Export.class);
expect(mockExport.createPDF(resultList, null);
// Run the tested method.
}
}
答案 1 :(得分:1)
以下是如何模拟构造函数调用的说明:MockConstructor