[英]How to write Unit test with Mockito
我有一个简单的控制器,我想为其编写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。 如何为该控制器编写适当的单元测试?
您没有说什么为null
但我假设您的模拟都不是,因此您必须在测试类中声明以下运行器:
@RunWith(MockitoJUnitRunner.class)
但是,我在您的测试中看不到的是添加到模拟中的任何行为。 例如,你没有告诉usrCtl
要在返回任何getLoginForm(...)
调用,因此会返回null
默认-也许这就是为什么你看到null
。
要指示usrCtl
模拟返回所需的值,可以执行以下操作:
given(userCtl.getLoginForm(model)).willReturn(UserController.LOGIN_PATH);
如果尚未了解Mockito文档 ,则应该查看它,以获取更多信息和示例。
您从未实例化测试类的属性。
private Model model = new Model(<params>)
private DefaultControllerImpl sut = new DefaultControllerImpl(<params>);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.