0

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 を返します。このコントローラーの適切な単体テストを作成するにはどうすればよいですか?

4

2 に答える 2

1

あなたはであるかは言いませんnullが、あなたのモックはどれもそうではないと仮定しているので、テストクラスで次のランナーを宣言したに違いありません:

@RunWith(MockitoJUnitRunner.class)

ただし、テストで確認できないのは、モックに追加された動作です。たとえば、呼び出しでusrCtl何も返さないように指示していないため、デフォルトで返されます-おそらくこれが.getLoginForm(...)nullnull

usrCtl必要な値を返すようにモックに指示するには、次のようにします。

given(userCtl.getLoginForm(model)).willReturn(UserController.LOGIN_PATH);

詳細と例については、まだ Mockitoのドキュメントを参照していない場合は参照してください。

于 2013-06-21T07:30:48.967 に答える
0

テスト クラスのプロパティをインスタンス化していません。

private Model model = new Model(<params>)

private DefaultControllerImpl sut = new DefaultControllerImpl(<params>);
于 2013-06-20T18:44:09.683 に答える