我有一个简单的 Controller ,我想为其编写 Mockito 单元测试。这是代码:
private final UserController userCtl;
public String get(final Model model) {
return this.userCtl.getLoginForm(model);
}
这是我的测试:
@Mock
private Model model;
private DefaultControllerImpl sut;
@Before
public void setup() {
this.ctl = new DefaultControllerImpl(this.userCtl, this.authService, this.orgService, this.riskSpaceService);
this.ctl.setMessageSource(this.messageSource);
}
@Test
public void testGet() {
final String view = this.sut.get(this.model);
assertThat(view).isEqualTo(UserController.LOGIN_PATH);
}
但是,此测试始终返回 null。我怎样才能为这个 Controller 编写适当的单元测试?
最佳答案
你没有说什么是null
,但我假设你的模拟没有一个是空的,所以你必须在你的测试类上声明以下运行器:
@RunWith(MockitoJUnitRunner.class)
但是,我在您的测试中看不到添加到模拟中的任何行为。例如,您没有告诉 usrCtl
在 getLoginForm(...)
调用上返回任何内容,因此默认情况下它将返回 null
- 也许是这样这就是您看到 null
的原因。
要指示 usrCtl
模拟返回您想要的值,您可以执行以下操作:
given(userCtl.getLoginForm(model)).willReturn(UserController.LOGIN_PATH);
您应该看看 Mockito documentation ,如果您还没有这样做,请获取更多信息和示例。
关于java - 如何使用 Mockito 编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221342/