Spock 断言函数调用

Spock asserting function calls

在 Spock 中,我试图断言使用给定参数调用了一个方法。

如果我执行以下操作,则测试通过:

        1 * snsClient.publish('arn:aws:sns:foo:bar:status', '{"status":"NEW"}')

如果我执行以下操作,则测试不会通过:

        1 * snsClient.publish('arn:aws:sns:foo:bar:status', JsonOutput.toJson([
                ["status":"NEW"]
        ]))

有没有办法让第二次检查通过?

我正在使用 Spock 1.1 和 Groovy 2.4

根据您的示例,第二个示例从一个列表中创建了一个 JSON,其中只有一个元素是地图。

1 * snsClient.publish('arn:aws:sns:foo:bar:status', JsonOutput.toJson([
        ["status":"NEW"]
]))

如果你想产生与第一个相同的结果,不要用列表包装预期的地图。

1 * snsClient.publish('arn:aws:sns:foo:bar:status', JsonOutput.toJson(["status":"NEW"]))