Tworzę prosty fragment, który powinien przekazać Box[String]
z żądaniami user-agent do klasy pomocniczej, która przekazuje klasy css, które powinny zostać dodane do elementu html. Robię to, ponieważ wydaje się trudne uzyskanie polecenia "Podnieś", aby dostarczać html respons z komentarzami warunkowymi, takimi jak te w html5boilerplate. To jest to, co mam teraz i to działa:Testowanie fragmentu w Lift
class LiftBoilerplate {
def render = "html [class+]" #> getClassForUserAgent(S.request)
private def getClassForUserAgent(request:Box[Req]) = request match {
case Full(r) => LiftBoilerplateHelper.getHtmlClass(r.userAgent)
case _ => ""
}
}
Moim problemem jest to, że chciałbym napisać test jednostkowy za to jak:
object LiftBoilerplateSpecs extends Specification {
val session = new LiftSession("", randomString(20), Empty)
"LiftBoilerplate" should {
"add 'no-js' to the class of an html tag element" in {
val snippet = new LiftBoilerplate
val result = snippet.render(<html><head></head><body>test</body></html>)
result must ==/(<html class="no-js"><head></head><body>test</body></html>)
}
}
}
ten test nie powiedzie się, ponieważ S.request
jest Empty
. Co powinienem zrobić, aby podać fragment kodu z wyśmiewanym żądaniem zawierającym w sobie UserAgent?
Do tej pory wyglądało na http://www.assembla.com/spaces/liftweb/wiki/Unit_Testing_Snippets_With_A_Logged_In_User
i
http://www.assembla.com/spaces/liftweb/wiki/Mocking_HTTP_Requests
ale nie rozumiem jak achive mój cel.
doskonała, ale gdzie jest zbiorem kliencka ? Czy powinien on zostać dodany w 'Map' podanej do' ParamCalcInfo'? –
Nie, piąty parametr Req() jest HttpRequest. Powinieneś przekazać jego instancję z żądanymi nagłówkami (np. User-Agent). –
Zaktualizowałem odpowiedź, aby pokazać wyśmiewane żądanie. –