Я пытаюсь протестировать ClassA
, который использует 2 службы. Один сервис должен быть автоуведомлен, а один должен рассматриваться как издевавшийся объект. К сожалению, издевались объект@InjectMocks не работает во время автономной работы остатков зависимостей
не вводили
к моему испытанной классу. Все поля ведут себя так, как если бы я использовал только функцию автотюнинга весны, чтобы настроить ее. Тестируемый ClassA также наследуется от другого абстрактного класса. Если не используется аутсорсинг, то издевательский объект передается успешно. К сожалению, я не могу издеваться над ServiceDao, поэтому я пытаюсь объединить анкеты @InjectMocks
и @Autowiring
.
Класс А.
public ClassA extends AbstractClassA<ClassOne, ClassTwo>{
@Autowired
protected ServiceOne serviceOne; //this services needs to be mocked
@Override
protected List<ClassTwo> testedMethod(){
return serviceOne.getList(); //here method is not returning mocked objects
} //as it supposed to do.
........
}
AbstractClass
public class AbstractClassA<T1 extends InterfaceOne, T2 extends InterfaceTwo){
@Autowired
protected ServiceDAO serviceDAO; //this services needs to be autowired
protected abstract List<T2> testedMethod();
}
TestClass.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:testApplicationContext.xml"})
public class Test {
@Mock
private ServiceOne serviceOne; //this mock object and it's return
//objects are set properly
@Autowired
@InjectMocks
private ClassA classA; //all fields are autowired, including the services that should be mocked
@Before
public void setData(){
Mockito.Annotations.initMocks(this);
List<ClassTwo> result = Arrays.asList(new ClassA());
when(serviceOne.testedMethod().thenReturn(result); //here when i invoke mocked object it is returning correct list.
}
}
Я бы не стал смешивать различные системы впрыска. Вместо этого просто настройте свою Spring, чтобы создать издеваемую фасоль и ввести ее через Spring. –
мог бы объяснить, что вы имеете в виду о создании издевающегося боба? Как я могу сказать spring brean, чтобы вернуть sth при вызове метода? – Dago
Зависит от того, что вы используете, конфигурации XML, JavaConfig и т. Д. Но во всех случаях вы можете создать тестовую конфигурацию, которая просто использует Mockito (например) для создания компонента, который является макетом. Затем вы можете ввести этот компонент в свой тест и сказать ему, что делать. –