2016-03-04 63 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)) 
    } 
) 

所以後來如果路由匹配正則表達式的路徑可以訪問的答案