如何使用代数数据类型进行scalatest?

时间:2017-12-15 15:05:23

标签: scala scalatest

我正在使用scalatest如下:

@IBAction func editButtonPressed() {
    tableView.isEditing = !tableView.isEditing
}

如您所见,函数class AuthLdapSpec extends FlatSpec with Matchers { "The user" should "be signin successfully." in { AuthLdap.signin("user@example.com")("password").value.unsafeRunSync() match { case Right(r) => println(r) case Left(l) => println(l) } } } 返回AuthLdap.signin("user@example.com")("password").value.unsafeRunSync() 如何验证返回类型是Either[A, B]还是Right? 我尝试过如下:

Left

但是编译器抱怨道:

  

错误:(15,93)[Artima SuperSafe]类型的值   [String,io.khinkali.auth.AuthLdapUser]和scala.util.Right.type   可能无法与ScalaTest的matcher语法进行相等性比较。   如果您确实希望编译此表达式,请配置Artima   SuperSafe允许[String,io.khinkali.auth.AuthLdapUser]和   scala.util.Right.type要进行相等性比较。更多   有关此类错误的信息,请参阅:   http://www.artima.com/supersafe_user_guide.html#safer-equality

2 个答案:

答案 0 :(得分:1)

或者,如果你只是想声称它是一个“正确的”。有任何价值

AuthLdap.signin("user@example.com")("password").value.unsafeRunSync().isRight should be true

答案 1 :(得分:0)

请查看相关的ScalaTest documentation

基本上,你通过

检查
AuthLdap.signin("user@example.com")("password").value.unsafeRunSync().right should be "user@example.com"`

Right值应为

的任何内容