【问题标题】:Playframework Scala dinamically setup routes for scalatestPlay Framework Scala 为 scalatest 动态设置路由
【发布时间】:2016-03-09 05:52:56
【问题描述】:

我正在尝试编写一些集成测试。我想要实现的是设置几个假 URL 来模拟第三方服务。我想知道是否可以为测试动态设置 URL 路径。例如我有这个代码

在测试的基础文件中我有这个

override lazy val port = 1234

val myappTestConf = Map (
  "app.twilio.lookups" -> s"https://localhost:$port",
)

override lazy val port = 1234

implicit override lazy val app: FakeApplication =
  FakeApplication(
    additionalConfiguration = myappTestConf
  )

然后在一个更具体的文件中我有这个

val getLookupPhoneUrl = s"${phoneNumber}"

implicit override lazy val app: FakeApplication =
  FakeApplication(
    additionalConfiguration = myappTestConf,
    withRoutes = {
      case ("GET", `getLookupPhoneUrl`) => Action(testLookupPhone(_))
    }
  )

我遇到的问题是这段代码无法编译,因为在第二个文件中电话号码尚未设置,但我想动态设置,这可能吗?

谢谢

【问题讨论】:

  • 您能否展示完整的测试用例或详细说明“动态设置”以帮助我们更好地理解您的意图?我仍然看不到你想要达到的目标。
  • @Teliatko 谢谢你的回答终于团队中有人用正则表达式解决了这个问题我会发布答案。

标签: scala playframework scalatest


【解决方案1】:

团队的一位成员使用正则表达式解决了这个问题。这是答案

关于测试文件

val GetLookupPhone = """/v1/PhoneNumbers/([0-9\.\-]+)""".r

var phone: String = _

implicit override lazy val app: FakeApplication =
  FakeApplication(
    additionalConfiguration = educatinaTestConf,
    withRoutes = {
      case ("GET", GetLookupPhone(phone)) => Action(testLookupPhone(_, phone))
    }
  )

因此,如果路由匹配正则表达式,则可以访问路由。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多