2016-02-02 2 views
1

Я хочу проверить порядок вызовов последовательностей, но он не работал так, как я ожидал.Проверить порядок последовательных вызовов с помощью Mockito

import akka.actor.ActorSystem 
import akka.testkit.TestKit 
import org.scalatest._ 
import org.specs2.mock.Mockito 

class Test extends TestKit(ActorSystem("testSystem")) 
with WordSpecLike 
with BeforeAndAfterAll 
with PrivateMethodTester 
with `enter code here`Mockito 
{ 
    val m = mock[java.util.List[String]] 
    m.get(0) returns "one" 
    there was two(m).get(2) //do not throw any error, why??? 
} 

Я использую
2.11.7, Скала
specs2-ядро 3.6.6,
specs2-макет 3.6.6,
scalatest 2.2.4

THx

ответ

1

Я не думаю, что вы можете смешивать Specs2 и ScalaTest.

Вы удалите import org.scalatest._ и используйте вместо этого import org.specs2.mutable.SpecificationLike.

import akka.testkit.TestKit 
import akka.actor.ActorSystem 
import org.specs2.mock.Mockito 
import org.specs2.mutable.SpecificationLike 

class Test extends TestKit(ActorSystem("testSystem")) 
    with Mockito 
    with SpecificationLike 
{ 
    "it" should{ 
    "raise error" in { 
     val m = mock[java.util.List[String]] 
     m.get(0) returns "one" 
     there was two(m).get(2) 
    } 
    } 
} 

Теперь вы можете увидеть, что sbt test возвращает что-то вроде.

[error] The mock was not called as expected: 
[error] Wanted but not invoked: 
[error] list.get(2); 
[error] -> at Test$$anonfun$1$$anonfun$apply$1$$anonfun$apply$3.apply(Test.scala:14) 
[error] Actually, there were zero interactions with this mock. (Test.scala:14) 
+0

это работает, спасибо – myregister0618

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