繁体   English   中英

如何使用Mockito编写单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM