gpt4 book ai didi

java - 在 Play 2.5.x 中找不到类 play.api.cache.CacheApi 的构造函数

转载 作者:行者123 更新时间:2023-11-30 07:18:27 25 4
gpt4 key购买 nike

package test

import javax.inject._
import org.specs2.mutable._
import play.api.test.Helpers._
import play.api.test._
import play.api.libs.json._
import play.api.cache._
import akka.stream._
import akka.actor._
import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.ActorRef
import akka.actor.Props
import akka.pattern.ask
import models.MyWebSocketActor
import scala.collection.mutable.Map
import org.specs2.mock._
import play.api.mvc._

class ValidateMethodTest @Inject() (cache: CacheApi) extends Specification with Mockito {





val system = ActorSystem("MockActorSystem")
val mockMap : Map[ActorRef , String] = Map()


"validator method" should {

"check username key" in {

/*with no username key */
val testMsg1 = Json.parse("""{"message":"Testing Message" ,"conn_status" : 2 , "pub_key":"empty", "target":"all"}""")

val actor1 = system.actorOf(Props[MyWebSocketActor],"actor1")



val actor2 = system.actorOf(Props[MyWebSocketActor],"actor2")




val mockObject1 = new MyWebSocketActor(actor1,actor2,cache,mockMap)

val ( mockReturnMsg, mockReturnCode, mockPub_key) = mockObject1.validate(testMsg1)


mockReturnCode must equalTo(500)
}

}


}

我正在对类(MyWebSocketActor)中的特定方法(验证)进行单元测试,该方法接受缓存作为其参数之一。

为此,我需要创建一个 Cache 实例。 play.api.cache.CacheApi 是一个特征,因此无法实例化。所以我用 @Inject 在这个单元类中传递 (cache:CacheApi) 。但它给出了错误消息:找不到类 play.api.cache.CacheApi 的构造函数。我正在使用 Play 2.5.3 和 scala 2.11.x 。

最佳答案

您需要模拟CacheApi(或以其他方式创建它),而不是使用依赖项注入(inject)。

Play Documentation有一个关于如何执行此操作的很好的示例:

import org.specs2.mock._
import org.specs2.mutable._

import java.util._

class ExampleMockitoSpec extends Specification with Mockito {

"MyService#isDailyData" should {
"return true if the data is from today" in {
val mockDataService = mock[DataService]
mockDataService.findData returns Data(retrievalDate = new java.util.Date())

val myService = new MyService() {
override def dataService = mockDataService
}

val actual = myService.isDailyData
actual must equalTo(true)
}
}

}

关于java - 在 Play 2.5.x 中找不到类 play.api.cache.CacheApi 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38008734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com