2017-06-12 111 views
0

最近我開始在單元測試中使用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) 
    } 
} 

如何使 「存款測試」 通行證?

回答

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

但是,如果你想爲不同的測試:(