完全な開示:私はフレームワークを嘲笑し、嘲笑することにとても新しいです。私はScalaMockを使用しようとしています。なぜなら、ScalaTestで使用する 'デフォルトの'モッキングフレームワークのように思えますが、ScalaTestと互換性のある他のフレームワークを使用しています。ScalaMock。引数を取るクラスをモックする
問題:私はScalaでソケットと会話するクラスを作成しました。クラスには、どの種類のソケットと通信するかという型パラメータがあります。その引数の1つは、その型のソケットを作成するためのファクトリです。これは、シグネチャがあります。
class XScanner[T <: SocketClient](
confPath: String = "/etc/default/configPath",
socketClientFactory: String => T
) extends ScannerBase(path)
私は私のテストコードは、実際のソケットに接続する必要はありませんが、私は働くことができないので、モックSocketClientを供給することにより、このクラスのユニットテストを書くことができるようにしたいと思いますScalaMockでこれを行う方法。
私のテストコードは次のようになります。SocketClient
は、引数としてソケットへのパスを想定しているためコンパイルされませんが、それはタイプではないので、私はmock[SocketClient(s)]
を呼び出すことはできませんし、私ができる明らかに
val t = new XScanner[SocketClient](confPath, (s: String) => mock[SocketClient])
mock[SocketClient](s)
を呼び出してください。mockは渡された型の引数をそれ自身の引数として取っていないからです。
私はスキャナを渡す工場SocketClient
をどのように書くことができますか?私は引数を取るクラスを模擬する方法を試すことさえできません!
私はScalaMockの著者です。 ScalaのどのバージョンとScalaMockのバージョンを使用していますか? ScalaMock2とScalaMock3の回答は異なります。 –
Scala Mock 3 with Scala 2.10.0 – jangoolie