加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 模拟对象在游戏中[2.0]

发布时间:2020-12-16 09:02:35 所属栏目:安全 来源:网络整理
导读:我想通过在测试期间提供模拟对象来测试我的Play应用程序.在我的脑海中,有几种方法可以解决这个问题. 在测试期间提供备用路径文件 使用依赖注入,并在运行时检查全局值 我不确定哪个更可行,或者如何去做.任何见解将不胜感激. 解决方法 还有第三种方式;将控制器
我想通过在测试期间提供模拟对象来测试我的Play应用程序.在我的脑海中,有几种方法可以解决这个问题.

>在测试期间提供备用路径文件
>使用依赖注入,并在运行时检查全局值

我不确定哪个更可行,或者如何去做.任何见解将不胜感激.

解决方法

还有第三种方式;将控制器创建为用于测试的类或特征.这是一个简单的例子.

你的特质实施:

package services

trait MyService {
  def getUser(id:String):User
}

class ConcreteService extends MyService {
  override def getUser(id:String):User = {
  //Do real stuff
  }
}

在您的控制器类中:

package controllers

import services._

class Users(service: MyService) extends Controller {
  def show(id: String) = Action {
    val user = service.getUser(id)
    Ok(views.html.user(user))
  }
}

object Users extends controllers.Users(new ConcreteService()) {}

现在你可以运行一些单元测试..

package test

import controllers.Users
import play.api.test._
import play.api.test.Helpers._

import org.specs2.mock.Mockito
import org.specs2.mutable.Specification

class UsersSpec extends Specification with Mockito {
  val service = mock[MyService]

  "Users controller" should {
    "list users" in {
      //Insert mocking stuff here

      val users = new Users(service)
      val result = users.show("somerandomid")(FakeRequest())
      status(result) must equalTo(OK)
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读