我试图测试一个具有注入的RESTClient的Groovy类。
class MyService {
def restClient
def put() {
restClient.put(
path: "foo",
contentType: "XML",
body: { foo { bar(baz) }}
)
}
}
@TestFor(MyService)
class MyServiceSpec extends Specification {
RESTClient restClient = Mock()
def setup() {
service.restClient = restClient
}
def "posts to restClient"() {
when:
service.put()
then:
1 * service.restClient.put([
path: "foo",
contentType: "XML",
body: { foo { bar(baz) }}
])
}
}
更新:我认为问题的核心是{foo()}=={foo()}
是false。如何断言两个闭包的相等性
我发现我可以在Spock中捕获闭包,从闭包构建XML,并比较XML对象。什么是一个简明和可读的方法来实现这一点?
可以使用Spock中的_(undescore运算符)匹配“任何东西”
then:
1 * service.restClient.put(_)
应该能正常工作
我试图编写一个Spock规范,在这里我想验证一个用三个参数调用的方法。我根本不关心前两个,任何参数类型的实例都可以。我试图使用Spock通配符参数匹配,但不断遇到问题。我的验证如下所示: 这里是一个mock,UploadedPackage和PackageImportResponse.builder是预期的参数;在更改调用SaveService的代码之前,我试图先进行一个有效的测试。 我还尝试省略类
闭包作为参数(Taking closures as arguments) 现在我们知道了闭包是 trait,我们已经知道了如何接受和返回闭包;就像任何其它的 trait! 这也意味着我们也可以选择静态或动态分发。首先,让我们写一个获取可调用结构的函数,调用它,然后返回结果: fn call_with_one<F>(some_closure: F) -> i32 where F : Fn(i
如何监视Spock/Groovy中的闭包或代理? Spock有一个限制,您不能使用以下样式的交互测试模式: 这是可行的,如果有点笨拙,但显然有一个更动态的“闭包”类比一个我必须添加所有潜在数量的参数的类更好。 那么,是否可能有一个更动态的解决方案(如何?),或者使用或这一事实是否禁止了一个更动态的监视类?
问题内容: 我需要为某些数据集创建一个匹配查找器系统,如下所示: 有一组对象,每个对象都由一个字符串标识。 每个对象正好具有N个属性P i。每个属性值都是一个字符串。 N = 3的数据库示例(在现实生活中,N = 8)。 系统必须返回s 集,匹配对象属性上的给定查询。在查询中,用户必须指定所有属性值。或者,对于查询中的某些或所有属性,用户可以指定“通配符” ,这意味着任何属性值都将与条件匹配。 查
考虑以下功能: 当然,我们可以像这样调用它: 但是,提供显式闭包参数会导致编译器抱怨: 这是您的意图吗?阅读的留档时,我没有找到关于参数是否始终被包装的语句,即使在提供闭包时也是如此。我对的理解是: 接受闭包参数。如果参数不是闭包,但与闭包返回的类型相同,则包装它。 然而,我看到的行为是:无论如何都要包装参数。 一个更详细的例子使这在我看来很奇怪: 现在假设我想散列值的键: 为了澄清:的类型是 参