【发布时间】:2020-11-14 16:20:49
【问题描述】:
在我的班级TwitchService 中,我正在使用TwitchClientBuilder 创建一个私有字段twitchClient。如何处理使用twitchClient 的测试方法sendChatMessage()?
public class TwitchService {
public TwitchService(){
twitchClient = TwitchClientBuilder.builder().build();
}
public void sendChatMessage(String content) throws Exception {
if(content.isEmpty()){
throw new Exception("Cannot send empty message!");
}
twitchClient.getChat().sendMessage(content);
}
}
到目前为止,我已经尝试像这样嘲笑 TwitchClientBuilder.builder() 和 twitchCliendBuilder.build():
@RunWith(MockitoJUnitRunner.class)
public class TwitchServiceTest {
private TwitchService twitchService;
@Mock
private TwitchClientBuilder twitchClientBuilder;
@Test
public void sendChatMessage() throws Exception {
try (MockedStatic<TwitchClientBuilder> twitchClientBuilderMockedStatic = Mockito.mockStatic(TwitchClientBuilder.class)){
twitchClientBuilderMockedStatic.when(() -> TwitchClientBuilder.builder()).thenReturn(mock(TwitchClientBuilder.class));
when(twitchClientBuilder.build()).thenReturn(mock(TwitchClient.class));
twitchService = new TwitchService("x", "y");
twitchService.sendChatMessage("test message");
}
}
}
但是我在twitchClient 上得到NullPointerException 在sendChatMessage()
任何想法如何正确模拟这样的字段?
【问题讨论】:
-
你到底想测试什么?
标签: java unit-testing testing junit mockito