代码之家  ›  专栏  ›  技术社区  ›  Steve

在模拟类scala中初始化变量

  •  0
  • Steve  · 技术社区  · 6 年前

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

    我试图使用

             when(mock.answer).thenReturn(42)
    

    直接分配变量

            val mock.answer = 42
    

    以上两个都是通过编译错误实现的。”当“未被识别并直接赋值时,会出现运行时错误。

    1 回复  |  直到 6 年前
        1
  •  4
  •   proximator    6 年前

    我不确定我是否正确理解了您的问题,但请尝试下面的自包含代码片段,如果不够清楚,请告诉我:

    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)
      }
    }