如何在Scala中创建模拟对象?

时间:2019-06-19 12:49:19

标签: scala unit-testing

我正在为Scala类编写单元测试,代码如下。在为类A编写测试方法时,我在这里尝试模拟B类方法。这是我尝试的方法:

A类的测试类:

class ATest extends FunSuite with BeforeAndAfterAll {
    @InjectMocks
    val a: A = new A

    @Mock
    val b: B = new B

    override def beforeAll(): Unit = {
        super.beforeAll()
        MockitoAnnotations.initMocks(this)
    }

    test("testSum") {
        Mockito.doReturn(20).when(b).add(12)
        val actualValue = a.sum(12)
        assertResult(20)(actualValue)
    }
 }

以下是业务类别:

class A{
    val b = new B

    def sum(a:Int):Int={
    val value = b.add(a)
    value
    }
}

class B{
    def add(a:Int):Int={
    a+1
}
}

问题是仅当我在A Business类中保留 var b =新B 而不是 val b =新B 时,测试方法才能通过。我认为当 val b = new B 时,不会发生嘲笑。请帮忙!

0 个答案:

没有答案