ScalaMock:存根仅适用于第一次测试
最近,我开始在单元测试中使用ScalaMock库,它工作得很好,直到我想在多个测试中使用相同的stab(在测试套件中全局声明) 以下是一个例子:ScalaMock:存根仅适用于第一次测试,scala,scalamock,Scala,Scalamock,最近,我开始在单元测试中使用ScalaMock库,它工作得很好,直到我想在多个测试中使用相同的stab(在测试套件中全局声明) 以下是一个例子: import org.scalamock.scalatest.MockFactory import org.scalatest.FunSuite trait Bank { def transaction(amount: Double): Double def deposit(amount: Double): Double } class O
import org.scalamock.scalatest.MockFactory
import org.scalatest.FunSuite
trait Bank {
def transaction(amount: Double): Double
def deposit(amount: Double): Double
}
class OloloSuite extends FunSuite with MockFactory {
val fakeBank = stub[Bank]
(fakeBank.transaction _).when(10.0).returns(9.0)
(fakeBank.deposit _).when(10.0).returns(11.0)
//Pass
test("Transaction test") {
assert(fakeBank.transaction(10.0) === 9.0)
}
//Fails
test("Deposit test") {
assert(fakeBank.deposit(10.0) === 11.0)
}
}
如何使“存款测试”通过?快速解决方法是将“预期”功能移到测试中:
val fakeBank = stub[Bank]
test("Transaction test") {
(fakeBank.transaction _).when(10.0).returns(9.0).anyNumberOfTimes()
assert(fakeBank.transaction(10.0) === 9.0)
}
test("Deposit test") {
(fakeBank.deposit _).when(10.0).returns(11.0).anyNumberOfTimes()
assert(fakeBank.deposit(10.0) === 11.0)
}
但是,如果您希望在不同的测试中获得相同的结果,则仍然不方便:(一个快速解决方法是将“期望”函数移动到测试中:
val fakeBank = stub[Bank]
test("Transaction test") {
(fakeBank.transaction _).when(10.0).returns(9.0).anyNumberOfTimes()
assert(fakeBank.transaction(10.0) === 9.0)
}
test("Deposit test") {
(fakeBank.deposit _).when(10.0).returns(11.0).anyNumberOfTimes()
assert(fakeBank.deposit(10.0) === 11.0)
}
但是,如果您想在不同的测试中获得相同的结果,仍然不方便:(请阅读此处的文档: 您的选择:
- 将OneInstancePerTest与您的测试套件混合使用
- 或创建设备(例如,请参见上面的链接)
- 将OneInstancePerTest与您的测试套件混合使用
- 或创建设备(例如,请参见上面的链接)