Specs2 - 使用一组结果的Future来忽略匹配器中的属性

时间:2016-01-12 09:02:01

标签: scala spray specs2 spray-json

我有以下这个匹配器:

def haveBodyWith(content: Foo): Matcher[HttpResponse] = {
  ===(content) ^^ { (_: HttpResponse).entity.as[Foo].right.get.copy(name = "") }
}

case class Foo(id: Int, name: String)

我从HttpResponse中提取结果,然后将其与预期内容进行比较。到目前为止,这个匹配器工作得很好。现在,我有一个特定的用例,其中响应的内容是一个case类序列,我想忽略case类的一个属性。我无法完成这项工作:

{{1}}

如果我只是没有未来的内容进行比较,我就是这样做的(可能是类似于Seq的案例类),但未来会让它变得更难一些。 你觉得怎么样?

谢谢!

1 个答案:

答案 0 :(得分:1)

讨论发生在Google groups,最终的解决方案是:

def haveBodyWith1(content: Foo): Matcher[Future[HttpResponse]] = {
  ===(normalize(content)) ^^ { (response: HttpResponse) => 
    normalize(response.foo) }
}.await

def normalize(foo: Foo) = foo.copy(name = "")