首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Play 2.5.x中找不到类play.api.cache.CacheApi的构造函数

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

Stack Overflow用户
提问于 2016-06-24 08:19:36
回答 1查看 511关注 0票数 1
代码语言:javascript
复制
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 2.5.3和Scala2.11.x找到类play.api.cache.CacheApi .I am的构造函数。

EN

回答 1

Stack Overflow用户

发布于 2016-06-24 08:38:02

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

播放文档有一个很好的例子来说明如何做到这一点:

代码语言:javascript
复制
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)
    }
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38008734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档