2016-09-29 1 views
0

у меня есть:Mock метод на классе продлен еще на один класс

public class A extends B { 
    public ObjectC methodToTest() { 
     return getSomething(); 
    } 
} 

/* this class is in other project and compiles in project I want test */ 
public class B { 
    public ObjectC getSomething() { 
     //some stuff calling external WS 
    } 
} 

и на тест:

@RunWith(MockitoJUnitRunner.class) 
public class ATest { 

    @Mock 
    B bMock; 

    @InjectMocks 
    A classTotest; 

    @Before 
    public void setup() { 
     MockitoAnnotations.initMocks(this); 
    } 

    @Test 
    public void getMethodToTestShouldReturnObjectC() { 
     Mockito.when(bMock.getSomething()).thenReturn(new ObjectC()); 
     assertEquals(classTotest.methodToTest().getClass, ObjectC.class); 
    } 
} 

Но когда я запускаю тест Mockito звонит B (и это не удается, потому что звонков в Ws. ..)

Я прочитал много нового об этом, но я не могу его решить.

¿Как я могу искупить getSomething(), чтобы вернуть ObjectC?

ответ

1
Mockito.when(bMock.getSomething()).thenReturn(new ObjectC()); 

Этот метод изменяет только bMock. Он не меняет другого класса B (или A) экземпляры.

+0

но @InjectMocks не вводит bMock в classToTest? –

+1

@ ZaídaDeIsidroNavarro Нет '@ InjectMocks' на самом деле вводит mocks в поля' A' того же типа, и здесь класс 'A' не имеет поля, поэтому ничего не нужно вводить –

+0

Ок, извините, я пропустил @InjectMocks, все ясно поблагодарить вас обоих! –

Смежные вопросы