当前位置: 首页 > 知识库问答 >
问题:

使用变量而不是文字的Spock检查调用

琴镜
2023-03-14
class SomeSpec extends Specification {

    Map message

    String topicArn = "aws::fake-sns-topic"

    def 'test new message'() {
        when: 'A new message is received'
        message = [
                "ownerToken": null,
                "status": "NEW"
        ]
        def response = api.doHandleRequest(message)

        then: 'It is handled'
        1 * snsClient.publish(topicArn, JsonOutput.toJson([
                "ownerToken": null,
                "status": "NEW"
        ]))
    }
}
1 * snsClient.publish(topicArn, message)
Too few invocations for:

1 * snsClient.publish(topicArn, JsonOutput.toJson(message))   (0 invocations)

Unmatched invocations (ordered by similarity):

1 * snsClient.publish('aws::fake-sns-topic', '{"ownerToken":null","status":"NEW"}')
One or more arguments(s) didn't match:
0: <matches>
1: argument == expected
   |        |  |
   |        |  null
   |        false
   {"ownerToken":null,"status":"NEW"}

共有1个答案

董庆
2023-03-14

我更愿意将断言更改为

1 * snsClient.publish(topicArn, message)

好吧,它不能那样工作。正如您发布的测试错误所暗示的,您真正想要的是

1 * snsClient.publish(topicArn, JsonOutput.toJson(message))

从而导致您在测试过程中看到的异常。

def 'new message gets published'() {
  given: 'a new message'
  message = [
    "ownerToken": null,
    "status"    : "NEW"
  ]

  when: 'the message is received'
  def response = api.doHandleRequest(message)

  then: 'it gets published'
  1 * snsClient.publish(topicArn, JsonOutput.toJson(message))
}
 类似资料:
  • 在类上使用@DiscriminatorColumn并在子类上使用@DiscriminatorValue时,Hibernate生成的SQL将discriminator值用作涉及discriminator列的子句的文字。 这并不是很糟糕,除非您有几个鉴别器值,并且表可能被多次选择,这样就会出现如下查询: 可能有大量不同的SQL ID和基于文字的执行计划(在本例中为'fam'、'giv'、'pfx',但

  • 问题内容: 我正在尝试使用节点调试器。我正在运行服务器。然后我有: 在这一点上,正如预期的那样,当我运行此代码时,调试器弹出。但是,我希望它能够设置所有当前变量,就像在Chrome自己的调试器中一样。 但: 那么…我 实际上 如何检查当前变量? 额外的问题:是否可以使用Chrome的开发人员工具(CTRL-J)使其连接到节点并以这种方式工作?(我知道节点检查器,但是它已经过时了……) 问题答案:

  • 问题内容: 我对此代码有疑问: 错误的解释是: 作业的左侧必须是变量。 我理解这意味着什么,但是如何将上面的代码转换为正确的代码? 问题答案: 我在您的代码中看到一些错误。 您可能是数学术语 90 <=角度<= 180,表示角度在90-180之间。

  • 问题内容: 我发现一些旧的Python代码正在执行以下操作: 不出所料,有人抱怨建议使用。 现在的问题是,该模块已添加到Python 2.6中,我需要编写适用于Python 2.5+的代码 所以不是解决方案。 在这种情况下,哪种解决方案合适? 问题答案: 在Python 2中,您可以使用模块: 请注意使用元组来测试多种类型。 在幕后,只是的别名,等等: 该类型要求您的python编译时支持复数;如

  • 问题内容: 有谁知道如何检查JavaScript中的变量是数字还是字符串? 问题答案: 如果你处理的文字符号,而不是构造函数,你可以使用typeof运算。 如果您是通过构造函数创建数字和字符串,比如,你应该记住,可能会返回了。 检查类型的更简单的方法可能是利用在underscore.js中找到的方法可以在[此处找到带注释的源代码), 这将返回以下布尔值:

  • 问题内容: 您如何检查变量是否是python中的字典? 例如,我希望它遍历字典中的值,直到找到字典为止。然后,遍历找到的内容: 问题答案: 如果使用子类,则可以使用或可以使用的方法: