Mocking method for all instances of class with PowerMockito

Jeni

I am trying to mock a method whatever the instance that calls this method is. As far as I could got reading this can't happen with Mockito and should be done with PowerMockito, but I can't figure out the way it should be done. I have

public class B{
    public void veryAnnoyingMethod(int i, short s){}
}
public class A{
    public void veryImportantMethod(){
        B newB = new B();
        newB.veryAnnoyingMethod(i,s);
        ...
    }
}

I am trying to test the veryImportantMethod() and want to mock the veryAnnoyingMethod(). I don't want to mock the constructor as explained here: Mocking methods of local scope objects with Mockito because apart from the veryAnnoyingMethod() I need the newB fully functional.

I have come up with something like:

B dummyB = PowerMockito.spy(new B());
PowerMockito.doReturn(null).when(dummyB.veryAnnoyingMethod(Mockito.anyInt(), Mockito.anyShort()));

But it throws exception, and I don't think it is what I actually need.

UPDATE

After a bit more reading it seems I have to use PowerMockito.stub, or PowerMockito.supress. So I have tried the following:

PowerMockito.stub(PowerMockito.method(B.class, "veryAnnoyingMethod", int.class, short.class)).toReturn(null);

or

PowerMockito.supress(PowerMockito.method(B.class, "veryAnnoyingMethod", int.class, short.class));

But with either the method is still executed

Jeni

OK, I finally got it to work. Using either of stub and suppress is working. The test looks something like this:

@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
class TestClassAWithPowerMockito{
    @Test
    public void testVeryImportantMethod() throws Exception {
        A a = new A();
        PowerMockito.suppress(PowerMockito.method(B.class, "veryAnnoyingMethod", int.class, short.class));
        a.veryImportantMethod();
        ...
    }
}

Note the @RunWith(PowerMockRunner.class) and @PrepareForTest(B.class) I had to take the test using PowerMockito in separate class because adding these 2 notations made some of my other tests (which do not use PowerMockito, but only Mockito) fail.

Hope this is clear, and helps someone who is struggling with a similar problem.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Mocking static class with powermockito

Mocking a static method using powermockito

stubbing a method for all instances of a class

Mocking a private method in junit using Powermockito

PowerMockito mocking static method fails when calling method on parameter

Mocking private method with PowerMockito only works starting with second method call

Mockito: mock instance method for all instances of a class

Method changes all instances of class inside list

Is there a way to run a method for all instances of a class in python?

Execute a method from all instances of a class

mocking injected class method

OCMock - Mocking class method?

PowerMockito: got InvalidUseOfMatchersException when use matchers mocking static method

PowerMockito: mocking private method and get a value without accessing it

Mocking local object creation of a final class using Powermockito

Mocking an abstract method, but not the class constructor

Mocking method in class that is already mocked

mocking a function within a class method

Mocking base class method in Hippomocks

Mock a method in the class under test without PowerMockito

How would you call a method from all instances of a class?

Is it possible to write a static method that can alter all instances of an object of that class

Applying a method onto all instances of class inside a list

Mocking private method call using PowerMockito returns null instead of returning List<String>: (Want not to execute private method)

Mock all instances of a class

Printing all instances of a class

Getting all instances of a class

PowerMockito throwing exception when mocking static method of an enum and using that enum object inside a switch statement

Mockito: mocking class always calls real method

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive