I have one simple mock test:
it.should("not stop despite of exception") in new mocks {
inSequence{
(twitterApi.getLastTweets _) expects (*) returns Future.failed(new Exception)
(twitterApi.getLastTweets _) expects (*) returns Future.successful(Seq(tweet))
}
val probe = TestProbe()
dataflow.source(1 second, 3 seconds, twitterApi).runWith(Sink.actorRef(probe.ref, "complete"))
probe.expectMsgType[Failure](4.seconds)
probe.expectMsgType[Seq[Tweet]](8.seconds)
}
and source is
lazy val source: (FiniteDuration, FiniteDuration, TwitterApi) => Source[Seq[Tweet], Cancellable] =
(initialDelay: FiniteDuration, period: FiniteDuration, twitterApi: TwitterApi) => {
Source.tick(initialDelay, period, sinceId)
.withAttributes(ActorAttributes.supervisionStrategy(Supervision.resumingDecider))
.mapAsync(1) { x =>
val paging = x.get.fold(new Paging()) { id =>
new Paging().sinceId(id)
}
logger.debug(s"Running twitter request with $paging")
twitterApi.getLastTweets(paging)
}
}
But the result is:
assertion failed: timeout (8 seconds) during expectMsgClass waiting for interface scala.collection.Seq
Where is the second message? it seems like the second message is missing
Aucun commentaire:
Enregistrer un commentaire