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

但是,如果你想为不同的测试:(