2016-11-30 14 views
1

私はsearchProfileが引数なしで呼び出されたかどうかを確認するために、このメソッドをテストしようとしている:これは私のテストケースであるMockitoのjava - テストメソッドの呼び出しは、異なる引数を持つ

public void searchProfile(Long searchTerm) { 
    this.searchTerm = searchTerm; 
    searchProfile(); 
} 

public void searchProfile() { 
    //... 
} 

、私は1つの引数を持つメソッドを呼び出します議論のないものが呼び出されると期待してください

@Test 
public void testSearchProfile() throws Exception { 
    CustomerProfileController sutStub = Mockito.mock(CustomerProfileController.class); 

    doNothing().when(sutStub).searchProfile(); 

    sutStub.searchProfile(0L); 

    verify(sutStub, times(1)).searchProfile(); 
} 

私はこの作品を作ることができますか?今、それはちょうど私にエラーを与える:モックを調製する場合

Comparison Failure:

Expected: customerProfileController.searchProfile();

Actual: customerProfileController.searchProfile(0);

+0

あなたの問題を解決するという意味で、受け入れられる答えは正しいと思います。しかし、なぜモックをテストしたいのですか? 'CustomerProfileController'の具体的なインスタンスをテストし、そのdepencenciesを模擬するほうが良いのではないでしょうか?模擬テストは通常​​行われますか? – Magnilex

+0

@Magnilexあなたはそれについて正しいです、私は代わりに方法でスパイしたいと思いました。私は、いくつかの研究の後に、テストの実装をすべて変更しました。ありがとう! – Randy

+0

ええ、私はスパイがおそらくより良い選択だと言っているという答えを追加しようとしていましたが、その質問には私がそれを行うのに十分な文脈がありませんでした。 – Magnilex

答えて

3

あなたは

Mockito.when(sutStub.searchProfile(Mockito.anyLong())).thenCallRealMethod(); 

を使用する必要があります。

+0

素晴らしい!これは私のソリューションを構築するためのスタートアップをもたらしました。 'void'メソッドのために、' doCallRealMethod()。when(sutStub).searchProfile(Mockito.anyLong()); 'でなければなりません。ありがとうございました:) – Randy

+0

右、それが無効であることに気付かないでください。 –

+0

多分スパイを使用することもあなたのためのオプションです –

関連する問題