在模拟类Scala中初始化变量

时间:2018-07-30 11:09:24

标签: scala unit-testing mockito akka actor

我正在为akka actor模型实现编写单元测试。该系统包含需要初始化的类和特征。我的问题在于方法的测试。当我模拟类的必需参数时,它消除了intelij编译器错误,但是所有变量都设置为null。

我尝试使用

         when(mock.answer).thenReturn(42)

并直接分配变量

        val mock.answer = 42

以上两个通过编译错误。无法识别“何时”,直接分配值会导致运行时错误。

任何见识将不胜感激。

1 个答案:

答案 0 :(得分:4)

我不确定我是否正确理解了您的问题,但是请尝试下面的自包含代码片段,并让我知道它是否不够清楚:

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.mockito.MockitoSugar
import org.scalatest.{FunSuite, Matchers}
import org.mockito.Mockito.when

@RunWith(classOf[JUnitRunner])
class MyTest extends FunSuite with Matchers with MockitoSugar {

  trait MyMock {
    def answer: Int
  }

  test("my mock") {
    val myMock = mock[MyMock]
    when(myMock.answer).thenReturn(42)

    myMock.answer should be(42)
  }
}