Я делаю простой фрагмент, который должен передать Box[String]
с запросом user-agent на вспомогательный класс, который возвращает классы css, которые должны быть добавлены в элемент html. Я делаю это, потому что кажется сложным получить Lift для предоставления html-ответа с условными комментариями, например, в html5boilerplate. Это то, что у меня есть сейчас, и это работает:Тестирование фрагмента в лифте
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 _ => ""
}
}
Моя проблема заключается в том, что я хотел бы написать модульный тест для этого типа:
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>)
}
}
}
Этот тест не так S.request
является Empty
. Что я должен сделать, чтобы предоставить фрагмент с издеваемым запросом с помощью userAgent?
До сих пор я смотрел на http://www.assembla.com/spaces/liftweb/wiki/Unit_Testing_Snippets_With_A_Logged_In_User
и
http://www.assembla.com/spaces/liftweb/wiki/Mocking_HTTP_Requests
, но я не понимаю, как для того чтобы достигнуть своей цели.
Отлично, но где есть множество пользовательского агента ? Должен ли он быть добавлен в 'Map' для' ParamCalcInfo'? –
Нет, пятый параметр Req() является HttpRequest. Вы должны передать экземпляр его с помощью желаемых заголовков (например, User-Agent) –
Я обновил ответ, чтобы показать насмешливый запрос. –