Предположим, у меня есть класс под названием MainClass.Как создать фиктивный весенний боб для класса, имеющего автономные зависимости
public class MainClass {
@Autowired
AutoWiredClass autoWiredClass;
}
Я пытаюсь создать макет из MainClass с использованием Mockito.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class AutowiringTest {
@Configuration
static class AutowiringTestConfiguration{
@Bean
public MainClass mainClass() {
return Mockito.mock(MainClass.class);
}
}
@Autowired
MainClass mainClass;
@Test
public void testBeanCreation(){
assertNotNull(mainClass);
}
}
Я получаю эту ошибку при запуске тестового примера.
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: autowiring.AutoWiredClass autowiring.MainClass.autoWiredClass; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [autowiring.AutoWiredClass] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Я знаю, что могу достичь этого, используя @Mock и @InjectMocks. Но это не то решение, которое я хочу.
Мое требование состоит в том, чтобы создать фик-боб MainClass без создания фактического компонента AutowiredClass. Пожалуйста, помогите мне, как этого достичь.
Что вам нужно для всей весны, если вы хотите создать макет MainClass? Макет ничего не будет содержать ... –
Я просто привел пример. Я использую случай, когда класс, который я хочу протестировать, имеет несколько полей @Autowired. Я хочу, чтобы некоторые из них приходили с весны, а некоторые издевались над ними. –
Но в этом случае основной класс сам по себе не может быть макетом, что, кажется, имеет место здесь. Вы можете поместить mocks в не-mock, но наоборот, это не так часто и будет немного сложнее, возможно, для объекта Answer, который перенаправляет некоторый вызов на mocks, а некоторые - на реальные объекты. –