問題タブ [scalamock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jmockit - テスト用のスタブとしてクラスの代替実装を提供するためにスカラモックを使用する方法は?
私はいくつかの外部ライブラリに貢献しようとしているプロジェクトで、テスト目的でモックデータベースマネージャーをセットアップしたことを発見しました。ただし、このデータベース マネージャーが行うことは、メモリ内データベースを作成して操作することです。これはテスト目的です。
使用するフレームワークは Jmockit です。
scalamockでそれを再現する方法を見つけようとしましたが、わかりませんでした。
これが jmockit でどのように設定されているかを次に示します。
scalamock でそれをサポートできるものはありますか。これは、すべてのアプリケーションがどのように開発されたかに関連していることを知っています。特に、依存性注入をどのように使用したか、または使用しなかったか。しかし、それにもかかわらず、私たちはいつかレガシーコードに対処しなければなりません:) (ほとんどの場合)
私が目にする唯一のことは、スタブのすべての機能を書いていることです。A - しかし、それは良くありません。B - また、状態を保持できるフル クラスではありません。そのため、スタブを作成している囲んでいるクラスですべてを管理する必要があります。c - 繰り返しますが、レガシー コードはクラス内で多くの面白いことを行うので、すべてのコードを再作成する必要があります... d - MockDatabaseManager を再利用したいと思います。
何かアドバイスはありますか?
scalamock - scala モックでクラスをモックする方法
scalamock のドキュメントでは、次のように述べられています。
クラス、トレイト、ケースクラスのモック
サポートされている機能の 1 つです。
私は次のケースクラスを持っています:
私がする時:
次のエラーが表示されます。
そのためのインターフェースを実装できることはわかっていますが、いずれにせよ、これはケースクラス/コンストラクターを持つクラスをモックする方法をよりよく理解するのに役立ちます。
どうもありがとう、
マータリ
scala - オーバーロードされた関数の引数なしバージョンがscalamockで呼び出されることを確認する
私はスカラモックを使用しておりclose()
、RabbitMQcom.rabbitmq.client.Channel
クラスのメソッドが呼び出されていることを確認しようとしています。問題は、close()
メソッドが と の 2 つのオプションでオーバーロードされてclose()
いることclose(int, String)
です。引数なしのバージョンが呼び出されていることを確認したい。
次のコードを試しました:
verify()
オーバーロードされたどの関数を呼び出すかについてコンパイラが混乱しているため、上の行はコンパイルされません。
オーバーロードされた関数の引数なしバージョンが呼び出されることを確認するにはどうすればよいですか?
scala - ScalaMock では、誰かが新しいクラスのインスタンスを作成するたびに mockClass を返す方法は?
PowerMockito では、パターン「whenNew(MyClass).thenReturn(mockMyClass)」を使用して、誰かが MyClass のインスタンスを新しくしたい場合、実際のインスタンスの代わりに mockMyClass を受け取ります。
ScalaMock や EasyMock で同様のことができますか? この問題に丸一日費やしました。
これが私のシナリオです。クラス A と B の 2 つのクラスがあります。クラス A 内では、クラス B のインスタンスが新しくなります。
クラス A をテストしたいのですが、クラス A がクラス B の新しいインスタンスを作成するときに、(実際のクラス B ではなく) クラス B のモック オブジェクトを返す必要があります。
Java では、この問題を PowerMock と JUnit で簡単に処理できますが、Scala ではできません。
scala - scalamock を使用したテスト中に依存関係の欠落が検出されました
scalamock / scalatest を使用しようとしていますが、テスト中に常にエラーが発生します
私のbuild.sbt
私の単体テスト:
実行するsbt test
と、次のエラーが発生します。
どうすれば解決できますか?
ありがとう
scala - ScalaMock で期待値を書くには?
この質問は私が知っていることは明らかですが、ドキュメントに書かれていることはすべて試しましたが、どのクラスでも単一のメソッドをモックすることはできません。
このテストでは、Scala 2.10 および ScalaTest 2 用の scalaMock 3 を使用しています。
DateServiceTest.scala
DateService.scala
これは私にとってはかなり単純に思えますが、期待はこのエラーを投げることです
ここで何か間違ったことをしていますか?メソッドの期待値を設定する別の方法はありますか?
scala - 2 つのパラメーター グループを持つメソッドを ScalaMock する
このようなものをどのように正確にモックする必要がありますか (WS ライブラリからの Play の WSRequest の post メソッド):
これについて ScalaMock ページを読みましたが、成功していません。
スタブも可能ですか?私は運がないのでこれを試しています:
scala - トレイトを拡張するクラスの単体テスト - トレイトのメソッドをモックおよびスタブするにはどうすればよいですか?
私はscalatestを使用して、特性を拡張するクラスを単体テストしています(私のクラスが特性をミックスインとして使用しているという意味で)。
トレイトにはヘルパー メソッド (最終的にはデータベース内のいくつかのルックアップを呼び出す) であるメソッドが含まれており、クラスの機能だけを分離できるようにスタブ化したいと考えています。しかし、それを可能にする Mockito や ScalaMock のようなフレームワークを見つけることができませんでした。
質問: モッキング フレームワークで実現できますか? そうでない場合は、理由があるかどうかを知りたいと思います。
例えば。
i の値に応じて、別のスタブ化された回答を返す必要があります。モッキートに似た何か when(myTrait.usefulMethod(1)).thenReturn(10)
また、トレイトで別のメソッドが正しい値で呼び出されていることを確認する必要があります。
本質的に、私はこの質問を繰り返していますが、これは 2011 年に質問されたことに気付きました。新しいフレームワークと新しいアプローチがあるかもしれません。この 2001 年の質問では、トレイトのメソッドを検証する方法についても質問されていません。
質問: この方法で traits-as-a-mixin を使用すると、実際には、モック フレームワークを使用して mixin からメソッドをモック/スタブする単体テストを実行できなくなりますか? つまり、モッキングとスタブのフレームワークは、依存性注入の使用に依存していますか?
PS。私は今まで Mockito を使用してきましたが、scalamock やその他のフレームワークを使用することに抵抗はありません。特性をテストできることを宣伝しているため、scalamock を調べましたが、scalamock 自身のテストから、特性をモックすることはできますが、その特性がクラスではなくクラスへの依存関係として渡される場合にのみ、動作をスタブ モックできるようです。その特性を伸ばす。こちらをご覧ください