Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何使用specs2框架在liftweb中测试代码片段_Scala_Lift_Specs2 - Fatal编程技术网

Scala 如何使用specs2框架在liftweb中测试代码片段

Scala 如何使用specs2框架在liftweb中测试代码片段,scala,lift,specs2,Scala,Lift,Specs2,我正在尝试编写一个Specs2测试用例来测试代码片段。 我的代码片段如下所示: class RegisterTest extends Specification { val testurl = "http:/html/register?username=liftvalues" val testSession = MockWeb.testS(testurl) { S.session } def inSession[T](a: => T): T = S.initIfUninitte

我正在尝试编写一个Specs2测试用例来测试代码片段。 我的代码片段如下所示:

class RegisterTest extends Specification {
  val testurl = "http:/html/register?username=liftvalues"
  val testSession = MockWeb.testS(testurl) { S.session }
  def inSession[T](a: => T): T = S.initIfUninitted(testSession) { a }
  def is = s2"""   example1 $e1   """
  val html = <form><input name="username" value="liftvalues"></input></form>
  def e1 = {
    inSession{
      register(html)
    }
  }  
  def register(in:NodeSeq):Result = {
      val username = S.param("username") //Here we are getting "Empty Value" for the S object. 
      username === "liftvalues"  and  UserSchemaTest.registerData("data")
  }
}
类寄存器测试扩展了规范{
val testurl=“http:/html/register?username=liftValue”
val testSession=MockWeb.testS(testurl){S.session}
def inSession[T](a:=>T):T=S.initifuninited(testSession){a}
def is=s2“示例1$e1”
val html=
def e1={
插入{
注册(html)
}
}  
def寄存器(in:NodeSeq):结果={
val username=S.param(“username”)//这里我们得到的是S对象的“空值”。
username==“liftvalues”和UserSchemaTest.registerData(“数据”)
}
}
由于
S.param
空,此测试失败。我应该如何为代码段提供模拟请求

到目前为止,我已经看过
还有,但是我不知道如何实现我的目标。

你的代码本来就不应该编译,因为除了其他事情之外,
testSession
会返回一个
Box[LiftSession]
,而
S.initifuninited
需要一个unbox
LiftSession
。而且,这甚至不需要,因为
MockWeb.testS
将为您初始化会话

我对Specs2不是非常熟悉,但我相信这样的东西可以满足您的需求,或者至少可以让您接近:

class RegisterTest extends Specification {

  val testurl = "http://html/register?username=liftvalues"

  val html = <form><input name="username" value="liftvalues"></input></form>
  def e1 = register(html)  

  def register(in:NodeSeq):Boolean = {
      val username = S.param("username") //Here we are getting "Empty Value" for the S object. 
      username === "liftvalues" and  UserSchemaTest.registerData("data")
  }

  MockWeb.testS(testurl) {
    s2"""   example1 $e1   """
  }

}
类寄存器测试扩展了规范{
val testurl=”http://html/register?username=liftvalues"
val html=
def e1=寄存器(html)
def寄存器(in:NodeSeq):布尔={
val username=S.param(“username”)//这里我们得到的是S对象的“空值”。
username==“liftvalues”和UserSchemaTest.registerData(“数据”)
}
MockWeb.testS(testurl){
s2“示例1$e1”
}
}
MockWeb.testS
块中调用的所有内容都应该可以访问您的会话和请求,这样您就可以正常地进行方法调用


另外,您的测试看起来也是错误的,
s2”“”
可能会抛出一个错误。但是,我不完全确定您希望它做什么,所以我不能建议其他选择。

您的代码甚至不应该编译,因为除此之外,
testSession
将返回一个
框[LiftSession]
S.initifuninited
需要一个未绑定的
提升会话
。此外,由于
MockWeb.testS
将为您初始化会话,因此不应该需要该会话

我对Specs2不是非常熟悉,但我相信这样的东西可以满足您的需求,或者至少可以让您接近:

class RegisterTest extends Specification {

  val testurl = "http://html/register?username=liftvalues"

  val html = <form><input name="username" value="liftvalues"></input></form>
  def e1 = register(html)  

  def register(in:NodeSeq):Boolean = {
      val username = S.param("username") //Here we are getting "Empty Value" for the S object. 
      username === "liftvalues" and  UserSchemaTest.registerData("data")
  }

  MockWeb.testS(testurl) {
    s2"""   example1 $e1   """
  }

}
类寄存器测试扩展了规范{
val testurl=”http://html/register?username=liftvalues"
val html=
def e1=寄存器(html)
def寄存器(in:NodeSeq):布尔={
val username=S.param(“username”)//这里我们得到的是S对象的“空值”。
username==“liftvalues”和UserSchemaTest.registerData(“数据”)
}
MockWeb.testS(testurl){
s2“示例1$e1”
}
}
MockWeb.testS
块中调用的所有内容都应该可以访问您的会话和请求,这样您就可以正常地进行方法调用

此外,您的测试看起来也是错误的,
s2”“
可能会抛出错误。但是,我不完全确定你想要它做什么,所以我不能建议一个替代方案