Scala:单元测试异步调用的方法并返回未来
我有一个Scala方法,如下所示:Scala:单元测试异步调用的方法并返回未来,scala,scalatest,Scala,Scalatest,我有一个Scala方法,如下所示: def doAnAsynchOperation(bunchedFilesUnit:BunchOfFilesUnit): Future[FilesHandled] = { val handleFuture = future { BunchOfFilesUnit.unit.map(file => { //FileParsing code - insta
def doAnAsynchOperation(bunchedFilesUnit:BunchOfFilesUnit):
Future[FilesHandled] = {
val handleFuture = future {
BunchOfFilesUnit.unit.map(file => {
//FileParsing code - instantiate a class for file parsing
//Open a fileInputStream
//get an OutputStream
try {
//do some parsing, pass in a "file" invoke a parsing method
} catch {
case e:Throwable =>
//some code
} finally {
fileInputStream.close()
outStream.close()
}
})
}
我在我的单元测试中调用这个方法,用“descripe”编写,在它里面,我将有一个“it”
有5条线。每个线程被分配处理单个bunchedfluenit的任务
这5个线程正在异步调用DOANASynchronousOperation方法(每个线程自己调用),以处理自己的BunchedFileUnit,该方法返回一个未来的[BunchedFileUnit]
我想做到的是:
我想编写一个或多个测试来测试这个场景。我想加入一个超时
我不太清楚这里的超时概念,但我假设我必须设置一个超时并预测一个TimeOutException。在这种情况下,我如何安排测试?这就是我想要完成的
目前,我的测试计划如下: import org.scalatest._
import org.scalatest.concurrent.ScalaFutures
import scala.concurrent.{Await, ExecutionContext, duration, Future}
import duration._
import akka.actor.{Actor, ActorRef, ActorSystem}
import org.scalatest.MustMatchers
import java.io.File
class FileHandlerTest extends FunSpec
with MustMatchers
with ScalaFutures
with BeforeAndAfter with SomeTraitThatINeeed {
describe("------------"){
}
}
我要冒险出去,我猜你在找“助手”。我看到您已经导入了ScalaFutures,因此您可以在示例中执行以下操作:
val files = Seq(...)
whenReady(doAnAsynchOperation(files), timeout(Span(6, Seconds))) { result =>
result mustEqual "the correct value"
}
如果您试图测试失败条件,您可以尝试给它一个非常短的超时时间,但我不确定除了确保它不会完成得太快或太长之外,还能完成什么