ScalaMock:Stub仅适用于第一次测试
问题描述:
最近我开始在单元测试中使用ScalaMock库,它工作正常,直到我想在多个测试中使用相同的stab(在测试套件中全局声明)。ScalaMock:Stub仅适用于第一次测试
下面是一个例子:
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)
}
}
如何使 “存款测试” 通行证?
答
相同的结果,它仍然不方便请在这里阅读文档:http://scalamock.org/user-guide/sharing-scalatest/
您的选择:
混合物在OneInstancePerTest与测试套件
或创建一个固定装置(见上文例如链接)
答
要快速解决,这是移动的测试里面的“期望”功能:
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)
}
但是,如果你想为不同的测试:(