3

私は、Grails リンク ジェネレーターを使用してリンクを生成するコードの単体テストを行っています ;-)。私がテストしているコードでは、次のステートメントが表示されます。

grailsLinkGenerator.link(mapping: "someUrlMappingName", id: someObject.id)

インターフェイスのソース コードLinkGeneratorを見ると、次のメソッド シグネチャが表示されます。

String link(@SuppressWarnings("rawtypes") Map params, String encoding);

Groovy は、名前付き引数のリストをマップとして扱います。これについては、こちらで説明しています。これはわかります。しかし、私が理解していないのは、次の (Spock) Mock が機能しない理由です。

1 * factory.grailsLinkGenerator.link(mapping: "someUrlMappingName", id: someObject.id)

次の例のように、名前付き引数をマップに明示的に配置する必要があります。

1 * factory.grailsLinkGenerator.link([mapping: "someUrlMappingName", id: someObject.id])

ここで何が起こっているのか誰か説明できますか? これは Spock モッキング ライブラリの制限ですか? 私が (まだ) 把握していない他の Grails または Groovy の魔法はありますか?

4

0 に答える 0