在PowerMock中模拟一个类

时间:2013-09-18 09:57:04

标签: junit powermock

我正在使用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 .....

这一行

2 个答案:

答案 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