У меня есть класс Service
, который я хочу проверить. В принципе, я столкнулся с проблемой, так как хочу, чтобы объект Service
был частично изделен. Только obj1
следует высмеивать, а остальные другие сотрудники должны быть реальными. Мой код похож на этот:Хотите, чтобы весенний боб посмеялся, а также реальные реализации + весна + mockito
@Component
public class Service {
@Autowired
Object1 obj1;
@Autowired
Object2 obj2;
public void validate(){
obj1.isValid();
obj2.isActive();
}
}
Теперь в то время как метод тестирования валидации указанного выше Service
класса, я хочу, чтобы дразнить метод о bj1.isValid()
при вызове реальной реализации obj2
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:conf/test-context.xml"})
public class ServiceTest {
@InjectMocks
Service service;
@Mock
OBject1 obj1;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testValidate(){
service.validate();
//assert and other stuff
}
}
Этот тест терпит неудачу и когда я отлаживал метод проверки, я обнаружил, что экземпляр obj1
вводится как высмеиваемый, как ожидалось, в классе Service
, но obj2
вводится как null
. Следовательно, тест не удается ... Есть ли способ достичь этого?
update Как я читал в некоторых ответах SO, я использовал springockito. Я добавил ниже вещь в тестовый класс, как показано ниже, но все же результат:
@ReplaceWithMock
@Autowired
Object2 obj2
Спасибо, что ответили, но у моего объекта Object2 есть другие автоувеличиваемые зависимости, которые я должен проверить, поэтому это не подходит для меня ... – Rips