Сначала я попробовал это:
Код: Выделить всё
private static class Foo {
private final int field;
Foo(int field) {
this.field = field;
}
int getField() {
return field;
}
}
@Test
public void test() {
Foo spy = new Foo(5);
try (var ignored = mockConstruction(Foo.class, withSettings()
.spiedInstance(spy))) {
Foo foo = new Foo(0);
int field = foo.getField();
Assert.assertEquals(5, field);
}
}
Код: Выделить всё
java.lang.AssertionError:
Expected :5
Actual :0
Я также попробовал это для тестового кода:
Код: Выделить всё
@Test
public void test() {
try (var ignored = mockConstruction(Foo.class, withSettings()
.useConstructor(5)
.defaultAnswer(CALLS_REAL_METHODS))) {
Foo foo = new Foo(0);
int field = foo.getField();
Assert.assertEquals(5, field);
}
}
Третье, что я попробовал, было вот это, но та же проблема:
Код: Выделить всё
@Test
public void test() {
Foo spy = mock(Foo.class, withSettings()
.useConstructor(5)
.defaultAnswer(CALLS_REAL_METHODS));
try (var ignored = mockConstruction(Foo.class, withSettings()
.spiedInstance(spy))) {
Foo foo = new Foo(0);
int field = foo.getField();
Assert.assertEquals(5, field);
}
}
В реальном коде, который я тестирую, определенно есть проблемы с дизайном, но я все равно проверяю, есть ли в Mockito ошибка.
Подробнее здесь: https://stackoverflow.com/questions/782 ... th-mockito
Мобильная версия