Mocking two objects of the same type with Mockito
mockito
Solution
I have tried mocking two objects with the same type with Mockito 1.9.5 using JUnit and it works.
See: http://static.javadoc.io/org.mockito/mockito-core/1.9.5/org/mockito/InjectMocks.html
Relevant type info from the doc:
"Field injection; mocks will first be resolved by type, then, if there is several property of the same type, by the match of the field name and the mock name."
And this one which seems to say you should make the mock name match the field name for all your mocks when you have two of the same type:
"Note 1: If you have fields with the same type (or same erasure), it's better to name all `@Mock` annotated fields with the matching fields, otherwise Mockito might get confused and injection won't happen."
Perhaps this latter one is biting you?
Problem
I'm writing unit tests using Mockito and I'm having problems mocking the injected classes. The problem is that two of the injected classes are the same type, and only differentiated by their `@Qualifier` annotation. If I tried to simply mock `SomeClass.class`, that mock is not injected and that object is `null` in my tests. How can I mock these objects? ``` 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); } } ```