Playframework Scala dinamically为scalatest设置路线

时间:2016-03-04 15:06:53

标签: scala playframework scalatest

我正在尝试编写一些集成测试。我想要实现的是设置几个假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(_))
    }
  )

我遇到的问题是这段代码没有编译,因为在第二个文件中还没有设置phoneNumber,但是我想设置dinamically,这可能吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

关于测试文件

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))
    }
  )

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