簡體   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