1

クラスがあります。Aファクトリ メソッドを持つコンパニオン オブジェクトがあります。

class A private[somepackage](x: Int) {

}

object A { def createA(y: Int): A = { new A(y) } }

Aここで、別のパッケージにある scalatest ファイルにモック オブジェクトを作成する必要があります。

私が与えるとき

private val a = mock[A] --> コンパイル エラーが発生します。

Aクラスのコンストラクタは << >>Aでアクセスできません。somewhereオブジェクトをモックするより良い方法はありますか??

4

2 に答える 2

0

プロキシを使用してクラス A にアクセスし、代わりにそのプロキシ クラスをスタブ/モックすることを検討してください。たとえば、A.doStuffモック/スタブしたいA.accessStuffものであり、コードで必要なものである場合は、クラスを作成します

class ADecorated(underlying: A) {
  def doStuff() {
    underlying.doStuff()
    // whatever I want to do
  }

  def accessStuff() {
    x = underlying.accessStuff()
    // do something else and return
  }
 // Any other method you want to use
}

A.createAの使用法を新しいものに置き換えますADecorated(A.createA())ADecoratedあなたが今取り組んでいるものです

于 2018-07-26T17:16:37.383 に答える