我正在为我的代码编写一个JUnit测试用例,但是Mockito总是返回null
@Component
public class ConnectorImpl {
public String returnString(String inte) {
String x = testing();
return x;
}
public String testing() {
return "test";
}
}
测试类
@RunWith(MockitoJUnitRunner.class)
public class ConnectorImplTest {
@Mock public ConnectorImpl connector;
@Test
public void testLoggedInRefill() throws Exception {
Mockito.when(connector.testing()).thenReturn("test");
String x = connector.returnString("8807");
assertEquals("8807", x);
}
}
当我打电话给connector.returnString("8807");
时,它总是返回null
。我做错了什么吗?我是JUnit的新手。
答案 0 :(得分:0)
测试方法// mock 'returnString' method call
Mockito.when(connector.returnString(anyString()).thenReturn("test");
// assert that you've mocked succesfully
assertEquals("test", connector.returnString("8807"));
的一种方法是:
JsonObject o = Json.createReader(new URL("https://www.googleapis.com/oauth2/v1/tokeninfo?access_token="+token).openStream()).readObject();
答案 1 :(得分:0)
根据您的代码,您正在嘲笑ConnectorImpl
因此它是一个空对象,这意味着您可以专门when(...).then(...)
具体测试任何要测试的功能。
顺便说一句-如果您正在测试ConnectorImpl
,则不应模拟它,而应使用实际的bean。您应该模拟ConnectorImpl
正在使用的bean。
所以我建议您的代码看起来像这样:
@RunWith(MockitoJUnitRunner.class)
public class ConnectorImplTest {
public ConnectorImpl connector = new ConnectorImpl(...);
@Test
public void testLoggedInRefill() throws Exception {
String x = connector.returnString("8807");
assertEquals("8807", x);
}
}
答案 2 :(得分:0)
您正在模拟对象,并且没有为模拟对象的returnString方法指定任何行为。就像您对testing()所做的一样,您可以对returnString()方法做同样的事情:
when(connector.returnString(anyString())).thenReturn("text")
另一方面,为什么您需要模拟此类?