Я использую мокито с огурцом. У меня есть код в шаге определения, который выглядит так:
@Mock
private SystemsConfig systemsConfig;
@And("The login to mySytem is executed successfully")
public void loginToMySystem() {
Mockito.when(systemsConfig.getUrl()).thenReturn(MyUnitMocks.baseUrl);
}
При отладке я вижу, что systemConfig имеет значение null, хотя я над ним издевался. То же самое отлично работает с использованием junit . Почему так ? Как я могу добиться этого с помощью мокито и огурца?
Это не работает, потому что магии не существует. Должно быть что-то, что связывает Mockito с JUnit, чтобы он знал, когда создавать макеты.
Когда вы используете JUnit, вы также используете расширение Mockito Junit, средство запуска Mockito JUnit, фреймворк, такой как Spring, или что-то еще, что эффективно вызывает:
MockitoAnnotations.initMocks(this);
Для Cucumber такого расширения нет. Поэтому при использовании Cucumber вы должны сделать это в хуке перед.
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
Вы можете найти более подробное объяснение обновления в документе Java для @Mock
.
https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mock.html
Принято +1. Имеет смысл. Теперь я знаю, какую ошибку я делал. Спасибо.