2017-06-02 2 views
1

私は2つのテストでakka-httpルートの仕様を持っています。私は個別にうまくこれらのそれぞれを実行することができます - しかし、私は(両方のテストを含む)全体の仕様を実行したときに、第二1は完了していないにも30秒ScalatestRouteTestは一緒に実行されたときにタイムアウトしますが、個別に細かく実行します

以内に却下されたどちらも

要求に失敗しました誰がなぜこれが分かっていますか?

私はそれが関連しているかどうかわかりませんが、各テストは単独で実行するか一緒に実行するかによってイベントを2回ロギングするようです。 (重複したイベントは異なるディスパッチャにあり、時には同じものが同じイベントになることもあります)。ログメッセージにブレークポイントを2回押してイベントが実際に2回呼び出されたと仮定します。繰り返しますが、関連性があるかどうかは不明ですが、単なる手掛かりです。

私は依存関係も模倣していますが、それは問題ではないと思います。任意の助けを事前に

package com.mystuff 

import akka.actor.ActorSystem 
import com.mystuff._ 
import org.mockito.Mockito._ 
import akka.http.scaladsl.model.StatusCodes.{NotFound, OK} 
import akka.http.scaladsl.server.Directives 
import akka.http.scaladsl.testkit.{RouteTestTimeout, ScalatestRouteTest} 
import org.scalatest.{BeforeAndAfterEach, FunSpec, Matchers} 

import scala.concurrent.Future 
import scala.concurrent.duration._ 

/** 
    * Created by bathalh on 6/2/17. 
    */ 
class OAuthClentServiceASpec extends FunSpec with Matchers with BeforeAndAfterEach with Directives with ScalatestRouteTest 
{ 
    implicit def default(implicit system: ActorSystem) = RouteTestTimeout(30 seconds) 

    private var mockDependencyFun: DependencyFun = _ 
    private var testObject: MyService = _ 

    override def beforeEach = 
    { 
     mockDependencyFun = mock(classOf[DependencyFun]) 
     when(mockDependencyFun(anyString())).thenReturn(Future successful "OK") 

     testObject = new MyService() { 
      def getDepFunction = mockDependencyFun 
     } 

    } 

    describe("OAuthClentService Application") 
    { 
     import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ 
     import com.mystuff.MyJsonProtocol._ 

     describe("Get a specific client") 
     { 
      it("Returns 404 with useful message when client does not exist") 
      { 
       val clientId = "does not exist client" 
       Get(s"/clients/$clientId") ~> testObject.routes ~> check { 
        status should be (NotFound) 
        responseAs[ErrorResponse] should be (ErrorResponse(Set(s"Client not found: $clientId"))) 
       } 
      } 

      it("Returns client information when client exists") 
      { 
       val clientId = "ValidClient" 
       Get(s"/clients/$clientId") ~> testObject.routes ~> check { 
        status should be (OK) 
        val clientInfo = responseAs[ClientResponse] 
        clientInfo.id should be (clientId) 
       } 
      } 
     } 
    } 
} 

ありがとう:

は私のテストのバージョンをダウン易しく書き直さ。

答えて

0

接続がタイムアウトになっているため、接続プールに問題がある可能性があります。

は、明示的にタイムアウトを渡して試してみて、それが私は十分なはず30秒、それを設定してい implicit def default(implicit system: ActorSystem) = RouteTestTimeout(50.second)

+0

をうまくいくかどうかを確認します。しかし、あなたは接続プールについて正しいかもしれません。私は私の 'application.conf'設定を混乱させて、何が起こっているのか分かりますか?ありがとう! –

関連する問題