問題タブ [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.
scala - ScalaMock を使用してモック クラスでネストされたメソッド呼び出しをテストする
私は ScalaMock と一般的なモッキングの両方が初めてです。別の (モックされた) クラスのメソッドを呼び出してから、返されたオブジェクトのメソッドを呼び出すメソッドをテストしようとしています。
詳細な情報:
私は ScalaTest を使用しており、このテストには 5 つのクラスが含まれています...
私がテストしているSubInstruction
テストのためにモックする必要があるマシン
Machine オブジェクトの構築に必要なレジスタ
元の Machine クラスとして作成した MockableMachine には空のコンストラクターがないため、(私が理解しているように)モックできません
そして最後に、コンパイルするが以下の例外をスローするテストクラス SubInstructionTest 。
スロー:
java.lang.NoSuchMethodException: Registers.mock$apply$0()
-
このクラスを何時間もモックする簡単な方法を探していましたが、何も見つかりませんでした。当分の間、以下に詳述する回避策に落ち着きましたが、SubInstruction クラスのテストの問題に対して、モックを使用することでより複雑でない解決策が得られるという印象を受けました。
回避策:
MockableMachine クラスを削除し、Machine を拡張してレジスタ値を構築時に提供される mockedRegisters に置き換える CustomMachine クラスを作成します。
オリジナルとして作成した MockableRegisters クラスには空のコンストラクターがないため、(私が理解しているように)モックすることはできません
SubInstructionTest クラスは、わずかに異なる方法で記述されています。
示されているように、これは私にとって回避策のように感じますが、これを行うためのより簡単な方法はありませんか (おそらく私の最初の試みに似ています)?
質問するために必要なコードだけを含めましたが、私のGitHub アカウントで完全なコードを見つけることができます。
java - Scalamock による Java 依存性注入のテスト
Java プロジェクトの単体テストに Scalamock を使用しています。プロジェクトには、Java CDI スタイル DI を使用するクラスが含まれています。
モックを Service インスタンスとして注入するにはどうすればよいですか? Mockito では @InjectMocks を使用できますが、どうしても Scalamock を使用したいと考えています。
scala - ScalaMock は (コンパニオン) オブジェクトとコンストラクターのモックをサポートしていますか?
(コンパニオン) オブジェクトとコンストラクターをモックする ScalaMock の機能については、多少矛盾した記述があります。ページScalaMock の段階的な状態
モックすることもできます:
- クラス *Singleton およびコンパニオン オブジェクト (静的メソッド)
- オブジェクトの作成 (コンストラクターの呼び出し)
- プライベート コンストラクターを持つクラス
- 最終クラスと最終メソッドを持つクラス
- 演算子 (記号名を持つメソッド)
- オーバーロードされたメソッド
一方、ロードマップには次のように書かれています。
2016 年第 1 四半期 - ScalaMock 4 scala.meta が利用可能になり次第、ScalaMock 4 の作業を開始する予定です。scala.meta がその約束を果たす場合、ScalaMock 4 は、その型がどれほど複雑であっても、あらゆるトレイトをモックできるはずです。
さらに、次の機能もサポートする予定です。
- 改善された構文: mockObject.expects.method(arguments) の代わりに: (mockObject.method _) expects (arguments)
- オブジェクト作成のモック (コンストラクター)
- シングルトン オブジェクトとコンパニオン オブジェクトのモック (静的メソッド)
- 最終クラスと、最終メソッドまたはプライベート コンストラクターを使用したクラスのモック
それで、何が正しいですか?現在のバージョン (ScalaMock 3.2) はオブジェクトとコンストラクターをモックできますか?
scala - Scalamock:プロキシモックの「期待」を取得するには?
私は ScalaTest で Scalamock を使用しており、Java インターフェイスをモックしようとしています。私は現在持っています:
今、私はやりたい
しかし、コンパイラは を見つけられませんexpects
。
を輸入org.scalatest._
しorg.scalamock.scalatest._
ました。他に何が欠けていますか?
scala - scalamock: サブタイプでのワイルドカード引数の一致
私のクラスでは、2 つのバージョンのメソッドがあります。1 つは 、もう 1 つはException
ですString
。
ではJMock
、型に基づいてメソッドの呼び出しをモックできます。Exception
テストで何を期待しているかを明確にするために、サブタイプ を使用していることに注意してください。
ではScalamock
、ワイルドカードを使用して一致させることができます
以下は、特定のサブタイプで照合しようとするとコンパイルされません (これは Scala では意味がないことに気付きました)。
with(any(SubTypesException.class))
を に変換するにはどうすればよいJMock
ですScalamock
か? 述語一致 ( ) を使用することは想像できますが、それでよいwhere
でしょうか?
編集:考えてみると、JMock
with(any(SubTypedException))
はコンパイラを満足させ、意図を表現することを目的としています。私が理解しているように、これMatcher
はIsAnything
マッチャーであるため、別のタイプの例外がスローされた場合、実際にはテストに失敗しません。そのため、適切な状況下でインテントを取得し、テストに失敗することの両方を Scalamock に要求している可能性があります。
instanceOf
Scalamockのようなことを行う方法を説明する際のボーナス ポイント。
scala - Scalamock scalatest - スタブできない
以下のようなワークフロー プロセッサ トレイトを作成しました。
ここで、このコードを単体テストしたいと思います。そこで、より良い小さなスケーラテスト scalamock テスト スイートを作成しました。
私の期待は、このスタブを別のクラスに設定して、クラスをテストすることです。スタブ (t.stage2 および t.stage3) は正常にコンパイルされますが、次のステートメントはコンパイルされません。
コンパイラは次の問題を報告します。
誰か助けてくれませんか?Scala クラスの単体テストを作成することと、それらをモックすることは非常に難しいと感じています。
Build.sbt からのスケーラテスト バージョン:
scala - 引数なしで暗黙的なパラメーターを持つメソッドをモックする
以下は機能しません。
次のエラーで失敗します。
注: http://scalamock.org/user-guide/advanced_topics/に示されている例は、メソッドに少なくとも 1 つの引数がある場合にのみ役立ちます。そのため、 scalamock を使用して scala で ClassTag を使用するメソッドをモックする場合のように、ソリューションを使用することはできません