EasyMock: Mock out a constructor call in java

前端 未结 4 1083
生来不讨喜
生来不讨喜 2021-01-05 03:11

I have a looked at similar questions on this board, but none of them answer my question. This sound strange, but is it possible to mock out a constructor call on the object

相关标签:
4条回答
  • 2021-01-05 03:48

    you can do so with EasyMock 3.0 and above.

    Customer cust = createMockBuilder(Customer.class)
         .withConstructor(int.class)
         .withArgs(145)
         .addMockedMethod("someMethod")
         .createMock();
    
    0 讨论(0)
  • 2021-01-05 03:49

    And this is why you want to inject your dependencies (via Guice or similar package) instead of creating them inside your class.

    Then you don't HAVE TO mock their construction.

    This assumes (a) that this is your code that you can change, and (b) that the objects in question are complex enough that you should inject them. Constructing simple objects inside your class are fine, but then you shouldn't need to mock them.

    0 讨论(0)
  • 2021-01-05 04:00

    You can't do this with easymock, as it doesn't support mocking constructors. There's a library called powermock which can do that and is the only mocking library, as far as I know, that can stub constructors and static methods in Java.

    0 讨论(0)
  • 2021-01-05 04:12
    import static org.powermock.api.easymock.PowerMock.expectNew;
    
    instance = new UsesNewToInstantiateClass();
    expectNew(AnyOldClass.class).andReturn(anyClass);
    
    0 讨论(0)
提交回复
热议问题