ожидания на все случаи на JMockit - PullRequest
0 голосов
/ 19 сентября 2019

Я ожидал, что JMockit установит ожидания для всех экземпляров.Однако это не работает, когда я добавляю в конструктор ожидание конструктора.

class Foo {
    Foo(int i) {}
    void foo() {}
}

@Test
public void expectationsOnAllInstances__Works(@Mocked Foo foo) {
    new Expectations() {{
        foo.foo();
    }};
    new Foo(3).foo();
}

@Test
public void expectationsOnAllInstances__DoesntWork(@Mocked Foo foo) {
    new Expectations() {{
        new Foo(3);  // <==== this constructor expectation messes things up ...
        foo.foo();
    }};
    new Foo(3).foo();
}

Второй тест завершается неудачно с ошибкой:

Missing 1 invocation to:
Foo#foo()
   on mock instance: Foo@617faa95
instead got:
Foo#foo()
   on mock instance: Foo@1e127982

JMockit 1.48

Спасибо!

1 Ответ

1 голос
/ 19 сентября 2019

Что ж, тест expectationsOnAllInstances__DoesntWork несовместим с ожиданиями, записанными и воспроизведенными ...

Что вам действительно нужно, так это одна из следующих двух версий:

    @Test
    public void expectationsOnAllInstances_consistent1(@Mocked Foo foo) {
        new Expectations() {{
            new Foo(3).foo();
        }};

        new Foo(3).foo();
    }

    @Test
    public void expectationsOnAllInstances_consistent2(@Mocked Foo foo) {
        new Expectations() {{
            new Foo(3);
            foo.foo();
        }};

        new Foo(3);
        foo.foo();
    }
...