Piszę testy jednostkowe za pomocą Mockito i mam problemy z kpieniem z wstrzykniętych klas. Problem polega na tym, że dwie z wtryskiwanych klas są tego samego typu i różnicowane tylko przez ich adnotację @Qualifier
. Jeśli próbowałem po prostu wyśmiewać SomeClass.class
, to nie wstrzykuje się tego mocku, a ten obiekt to null
w moich testach. Jak mogę kpić z tych obiektów?Kpiny z dwóch obiektów tego samego typu z Mockito
public class ProfileDAL {
@Inject
@Qualifier("qualifierA")
private SomeClass someClassA ;
@Inject
@Qualifier("qualifierB")
private SomeClass someClassB ;
//...various code, not important
}
@RunWith(MockitoJUnitRunner.class)
public class ProfileDALLOMImplTest {
@InjectMocks
private ProfileDALLOMImpl profileDALLOMImpl = new ProfileDALLOMImpl();
@Mock
private SomeClass someClassA;
@Mock
private SomeClass someClassB;
private SomeResult mockSomeResult = mock(SomeResult.class);
@Test
public void testSomeMethod() {
when(someClassA .getSomething(any(SomeArgment.class)).thenReturn(mockSomeResult);
Int result = profileDALLOMImpl.someTest(This isn't relevant);
}
}
Jak działa kod testowy wygląda? Zawsze jawnie nazywam 'Mockito.mock (SomeClass.class)', aby tworzyć moje mocks, utrzymując z mojej jednostki testy magii dostarczonej przez adnotacje. Powinieneś być w stanie zrobić to samo, jeśli wstrzykniesz swoje zależności za pomocą konstruktora lub setera. Czy istnieje dobry powód, dla którego tak nie jest? – rcomblen
Czy mógłbyś zademonstrować wstrzykiwanie tych zależności bez użycia @InjectMocks? Zaktualizowałem swoje Q, aby pokazać, jak mój test jest skonfigurowany. – tamuren