gpt4 book ai didi

scala - 如何为 "a,b,c".containsAllOf ("b","a"编写 Specs2 匹配器)?

转载 作者:行者123 更新时间:2023-12-02 05:02:29 25 4
gpt4 key购买 nike

我是 Scala/Play 2.1/Specs2 堆栈的新手,所以如果这个问题看起来很简单,请原谅,但我很难编写规范来测试“字符串包含单词‘GET’”的情况。我有一个 Play 2.1 操作,它返回一个 Access-Control-Allow-Methods header 值,例如

Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS

我的规范对其他 header 进行直接相等性检查没有问题,但我一直无法弄清楚如何检查每个 GET、PUT、POST、DELETE 和 OPTIONS 的 Access-Control-Allow-Methods header 。我期望像“必须包含(“GET”)这样的东西可以工作,但是 IDE 在这方面变红了:

type mismatch;  found   : org.specs2.matcher.ContainMatcher[String]  required: org.specs2.matcher.Matcher[Option[String]]   SessionsSpec.scala  /dm2-server/test/admin  line 53 Scala Problem

我的规范看起来像...

"send 200 on OPTIONS request on valid route" in {
running(FakeApplication()) {
var fakeReq = FakeRequest("OPTIONS", "/admin/sessions")
val Some(result) = route(fakeReq)
status(result) must equalTo(OK)
header(ACCESS_CONTROL_ALLOW_ORIGIN, result) must equalTo(Some("*"))
header(ACCESS_CONTROL_ALLOW_HEADERS, result) must equalTo(Some(CONTENT_TYPE))
val expectedMethods = Seq(GET, PUT, POST, DELETE, "OPTIONS")
header(ACCESS_CONTROL_ALLOW_METHODS, result) must containAllOf(expectedMethods)
}
}

如何在 Specs2 中表达“这个字符串是否包含所有这些值”的用例?

最佳答案

这里有一些类似于您要完成的事情:

"A split option string " should{
"be able to be verified with a containsAllOf matcher" in {
val headerVal = Some("a, b, c, d, e")
val expected = Seq("a", "e")

headerVal must beSome
headerVal.get.split(", ").toSeq must containAllOf(expected)
}
}

问题是您试图采用 Option[String] 并在 Traversable 匹配器中使用它来对抗 Seq。要进行这种比较,两项都需要Traversable。为此,我首先检查 Option 以确保它是 Some。然后我得到它并用逗号分隔它并将它变成一个 Seq。一旦两个部分都是 Traversable,您就可以使用那个 containAllOf 匹配器。

关于scala - 如何为 "a,b,c".containsAllOf ("b","a"编写 Specs2 匹配器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com