Scala 用域值模拟

Scala 用域值模拟,scala,mockito,scalatest,Scala,Mockito,Scalatest,我想知道如何在模拟中设置域值或值的范围 trait MyInt{ def getInt():Int } trait MyString{ def getName():String } 我试过一些,但没有效果。 我喜欢定义一个模拟的MyInt来返回(0100) 和MyStringtrait从这个域返回值:{“Dani”,Jonny,Jessica,…} 如何使用scalatest编写它?使用mockito+scalatest import org.mockito.Mocki

我想知道如何在模拟中设置域值或值的范围

trait MyInt{
     def getInt():Int
}


trait MyString{
     def getName():String
}
我试过一些,但没有效果。 我喜欢定义一个模拟的
MyInt
来返回
(0100)
MyString
trait从这个域返回值:
{“Dani”,Jonny,Jessica,…}


如何使用scalatest编写它?

使用mockito+scalatest

import org.mockito.Mockito._
import org.scalatest.FlatSpec
import org.scalatest.mock.MockitoSugar
import scala.util.Random

class FirstSpec extends FlatSpec with MockitoSugar {

    "The mock" should "pick a value from the interval" in {
        val mockInt = mock[MyInt]
        val mockStr = mock[MyString]

        when(mockInt.getInt()).thenReturn(pickOneFrom(1 to 100 toList))
        when(mockStr.getName()).thenReturn(pickOneFrom(List("Dani", "Jonny", "Jessica")))

        println(mockInt.getInt())
        println(mockStr.getName())

    }
}

其中pickOne将被定义为

def pickOneFrom[T](domain: List[T]) = domain(Random.nextInt(domain.length))

这一切都很好,但我打赌
Random
应该只实例化一次,而不是在每个方法调用上,因为伪随机数生成器是如何工作的。:)