【问题标题】:Mocking with domain values使用域值进行模拟
【发布时间】:2013-06-16 07:44:06
【问题描述】:

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

trait MyInt{
     def getInt():Int
}


trait MyString{
     def getName():String
}

我尝试了一些,但没有任何效果。 我喜欢定义一个模拟 MyInt 以从 (0,100) 返回值 和MyString trait 从这个域返回值:{"Dani",Jonny",Jessica",....}

我如何使用 scalatest 编写它?

【问题讨论】:

    标签: scala mockito scalatest


    【解决方案1】:

    使用 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 应该只实例化一次,而不是在每个方法调用上,因为伪随机数生成器是如何工作的。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 2020-08-20
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多