2016-03-04 62 views
0

我正在尝试编写一些集成测试。我想要实现的是设置一些伪造的URL来模拟第三方服务。我想知道是否有可能为测试动态设置URL路径。例如我有此代码Scalatest的Playframework Scala Dinamically设置路线

在用于测试我有这个

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

您可以展示完整的测试用例或详细说明“动态设置”以帮助我们更好地理解您的意图吗?我仍然看不到你想要达到的目标。 – Teliatko

+0

@Teliatko谢谢你的回答,最终团队中的某个人用正则表达式解决了这个问题我将发布答案。 – agusgambina

回答

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

所以后来如果路由匹配正则表达式的路径可以访问的答案