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