目標是模擬方法readInput InputReader類,以在我運行單元測試時返回特定值。如果我運行下面的代碼,那麼我得到:你如何做這個模擬工作?
java.lang.AssertionError:
Expected :1
Actual :0
這意味着該模擬不起作用。我如何使它在Java中工作?
package foo;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class InputTest {
private int getInput() {
return new InputReader().readInput();
}
@Test
public void getInputTest() throws Exception {
InputReader sc = mock(InputReader.class);
when(sc.readInput()).thenReturn(1);
assertEquals(1, getInput());
}
}
class InputReader {
int readInput() {
return 0;
}
}
你正在創建一個模擬InputReader,但是你調用的方法(getInput())不使用那個模擬實例。它使用'new InputReader()'。另一個實例是另一個,而不是模擬的InputReader實例。 –