2

私はscalatestを使用して、特性を拡張するクラスを単体テストしています(私のクラスが特性をミックスインとして使用しているという意味で)。

トレイトにはヘルパー メソッド (最終的にはデータベース内のいくつかのルックアップを呼び出す) であるメソッドが含まれており、クラスの機能だけを分離できるようにスタブ化したいと考えています。しかし、それを可能にする Mockito や ScalaMock のようなフレームワークを見つけることができませんでした。

質問: モッキング フレームワークで実現できますか? そうでない場合は、理由があるかどうかを知りたいと思います。

例えば。

trait MyTrait {
  def usefulMethod(i: int) = {...}
}


class MyClass extends MyTrait {
  def numberCruncher = {
     val x = usefulMethod(1) + 1
  }
}

i の値に応じて、別のスタブ化された回答を返す必要があります。モッキートに似た何か when(myTrait.usefulMethod(1)).thenReturn(10)

また、トレイトで別のメソッドが正しい値で呼び出されていることを確認する必要があります。

本質的に、私はこの質問を繰り返していますが、これは 2011 年に質問されたことに気付きました。新しいフレームワークと新しいアプローチがあるかもしれません。この 2001 年の質問では、トレイトのメソッドを検証する方法についても質問されていません。

質問: この方法で traits-as-a-mixin を使用すると、実際には、モック フレームワークを使用して mixin からメソッドをモック/スタブする単体テストを実行できなくなりますか? つまり、モッキングとスタブのフレームワークは、依存性注入の使用に依存していますか?

PS。私は今まで Mockito を使用してきましたが、scalamock やその他のフレームワークを使用することに抵抗はありません。特性をテストできることを宣伝しているため、scalamock を調べましたが、scalamock 自身のテストから、特性をモックすることはできますが、その特性がクラスではなくクラスへの依存関係として渡される場合にのみ、動作をスタブ モックできるようです。その特性を伸ばす。こちらをご覧ください

4

1 に答える 1