[解決済み] Mockito : メソッド内で生成されたオブジェクトでメソッドが呼び出されたことを確認する方法?
2022-03-23 18:43:38
質問
Mockitoの初心者です。
以下のクラスがある場合、Mockito を使って以下のことを確認するにはどうすればよいですか?
someMethod
の後にちょうど1回起動されました。
foo
が起動されたのですか?
public class Foo
{
public void foo(){
Bar bar = new Bar();
bar.someMethod();
}
}
次のような検証の呼び出しを行いたいと思います。
verify(bar, times(1)).someMethod();
ここで
bar
のモックインスタンスです。
Bar
.
解決方法は?
Bar のインスタンス、あるいは Bar のインスタンスを作成するためのファクトリー (あるいは他の 483 の方法のうちのひとつ) をインジェクトすれば、テストを実行するために必要なアクセス権を手に入れることができます。
ファクトリーの例です。
このように書かれたFooクラスがあるとします。
public class Foo {
private BarFactory barFactory;
public Foo(BarFactory factory) {
this.barFactory = factory;
}
public void foo() {
Bar bar = this.barFactory.createBar();
bar.someMethod();
}
}
をテストメソッドにインジェクトすることができます。
@Test
public void testDoFoo() {
Bar bar = mock(Bar.class);
BarFactory myFactory = new BarFactory() {
public Bar createBar() { return bar;}
};
Foo foo = new Foo(myFactory);
foo.foo();
verify(bar, times(1)).someMethod();
}
おまけ:TDD(Test Driven Development)がコードの設計を推進する方法の一例です。
関連
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] モックされたメソッドに渡された引数を返すようにする
-
[解決済み] Mockitoを使用して特定のメソッドが呼び出されていないことを確認するにはどうすればよいですか?
-
[解決済み] Mockitoは複数回呼び出されたメソッドの引数をキャプチャできますか?
-
[解決済み] モッキート メソッドをスパイしようとすると、元のメソッドが呼び出される
-
[解決済み] mockito verify()でメソッドが2回呼び出されたことを確認する方法
-
[解決済み】Mockitoでメソッド呼び出しの順序・順番を検証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
jd-gui Java Exceptionが発生しました。
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み】Loggerのメッセージに対してJUnitアサートを行う方法