Powermockito макет статический метод matcher не работает - PullRequest
0 голосов
/ 19 мая 2019

Когда я пытаюсь смоделировать статический метод с помощью ввода String, смоделированная заглушка выполняется, когда я даю определенную строку, но когда я использую anyString (), она не работает должным образом.

public class Foo {
    public static String staticInput(String s) {
        System.out.println("staticInput called");
        return "static " + s;
    }
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({Foo.class})
public class TestMockito {
    @Test
    public void test1() throws Exception {
        PowerMockito.spy(Foo.class);
        PowerMockito.doReturn("dummyStaticStub").when(Foo.class, "staticInput", "1");
        System.out.println(Foo.staticInput("1"));
    }

    @Test
    public void test2() throws Exception {
        PowerMockito.spy(Foo.class);
        PowerMockito.doReturn("dummyStaticIn").when(Foo.class, "staticInput", anyString());
        System.out.println(Foo.staticInput("1"));
    }
}

test1 печатает:

dummyStaticStub

test2 печатает:

staticInput вызывается
static 1

1 Ответ

0 голосов
/ 20 мая 2019

Вы можете немного изменить подход и использовать PowerMockito.mockStatic вместо

@RunWith(PowerMockRunner.class)
@PrepareForTest({Foo.class})
public class TestMockito {
    @Test
    public void test1() throws Exception {
        PowerMockito.mockStatic(Foo.class);
        Mockito.when(Foo.staticInput("1")).thenReturn("dummyStaticStub");
        System.out.println(Foo.staticInput("1"));
    }

    @Test
    public void test2() throws Exception {
        PowerMockito.mockStatic(Foo.class);
        PowerMockito.when(Foo.staticInput(anyString())).thenReturn("dummyStaticIn");
        System.out.println(Foo.staticInput("1"));
    }
}

Ссылка Использование PowerMock с Mockito: статический метод насмешки

...