0
注入されたRestClientを持つGroovyクラスをテストしようとしています。Spock引数の一致MarkupBuilderクロージャ
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) }}
])
}
}
:スポックが一致する引数を考慮しません。 Spockが同じ引数であることをSpockに認識させるにはどうすればいいですか?
(Grailsの2.3.11)
アップデート:私は、問題の核心は、{ foo() } == { foo() }
が偽であるということだと思います。 How to assert equality of two closures
私は、Spockでクロージャをキャプチャし、クロージャからXMLを構築し、XMLオブジェクトを比較できることがわかりました。それを達成するための簡潔で読みやすい方法は何ですか?