Авто-делегирование к val в методе Scala - PullRequest
2 голосов
/ 08 июня 2011

Я пишу ScalaTest FeatureSpec для приложения Wicket. У меня есть значение wicketTester, которое мне постоянно приходится вызывать, а именно:

scenario("No username and password") {
  val wicketTester = new WicketTester(app)
  given("user visits Admin home page")
  wicketTester.startPage(classOf[AdminHomePage])

  then("signin page is displayed")
  val login = wicketTester.newFormTester("signInPanel:signInForm")
  wicketTester.assertRenderedPage(classOf[SignInPage])
  ...
  when("correct username and password are entered")
  ...
  then("no login and error is displayed")
  wicketTester.assertRenderedPage(classOf[SignInPage])
  wicketTester.assertErrorMessages(Array("Field 'password' is required."))

Теперь все эти ссылки на wicketTester меня расстраивают, поэтому я хочу удалить их, стремясь к DSL нирване ...

scenario("No username and password") {
  val wicketTester = new WicketTester(app)
  given("user visits Admin home page")
  startPage(classOf[AdminHomePage])

  then("signin page is displayed")
  val login = wicketTester.newFormTester("signInPanel:signInForm")
  assertRenderedPage(classOf[SignInPage])...

Есть ли способ заставить методы локально выглядеть так, как если бы они были методами моего класса?

1 Ответ

7 голосов
/ 08 июня 2011

Вы пробовали импорт?

scenario("No username and password") {
   val wicketTester = new WicketTester(app)
   import wicketTester._    // import wicketTester's members into scope
   given("user visits Admin home page")
   startPage(classOf[AdminHomePage])

   then("signin page is displayed")
   val login = wicketTester.newFormTester("signInPanel:signInForm")
   assertRenderedPage(classOf[SignInPage])...  
}
...