Почему объект mockito mockito в файле stepdef Cucumber имеет значение Null?

Я использую мокито с огурцом. У меня есть код в шаге определения, который выглядит так:

    @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 . Почему так ? Как я могу добиться этого с помощью мокито и огурца?

Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не работает, потому что магии не существует. Должно быть что-то, что связывает 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. Имеет смысл. Теперь я знаю, какую ошибку я делал. Спасибо.

The Dark Knight 17.05.2022 14:57

Другие вопросы по теме