我正在为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 时,不会发生嘲笑。请帮忙!