2013-06-16 3 views
1

Мне интересно, как я могу установить значения домена или диапазон значений на насмешку.Сделки с данными домена

trait MyInt{ 
    def getInt():Int 
} 


trait MyString{ 
    def getName():String 
} 

Я пробовал некоторые, но ничего не работает. Мне нравится определять макет MyInt, чтобы вернуть значения от (0,100) и MyString. Чтобы вернуть значения из этого домена: {"Dani",Jonny",Jessica",....}.

Как я могу написать, используя скалят?

ответ

3

Использование 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)) 
+0

Это все хорошо, но я уверен, что 'Random' должны быть только экземпляры один раз, а не на каждом вызове метода из-за того, как работают генераторы псевдослучайных чисел. :) –

+0

Изменен для использования объекта Random companion ... – gnf

Смежные вопросы