【问题标题】:How to avoid calling Slack webhook during integration tests如何避免在集成测试期间调用 Slack webhook
【发布时间】:2019-08-29 09:04:23
【问题描述】:

我们的Spring-Boot 应用程序正在调用Slack webhook,以便将一些消息发布到 Slack 频道:

new RestTemplate().postForObject(slackChannel, new HttpEntity(...), String.class);

我们的挑战是如何在应用程序的测试阶段调用Slack

单元测试阶段,我们正在注入和模拟 Slack 服务,因此不会向 Slack 发送任何内容,一切正常。

问题出在集成测试期间,当系统作为一个整体运行时,我们当然不希望消息实际发送到 Slack。

一种选择是注入 webhook 的虚假 URL,但随后我们得到一个

org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden

我们当然可以用Try + Catch 包装调用代码,但这似乎很尴尬。

【问题讨论】:

    标签: java unit-testing spring-boot integration-testing slack-api


    【解决方案1】:

    所以,我们找到的解决方案是这样的:

    1. 我们以异步方式调用 sendToSlack 方法
    2. 我们使用虚假 URL 作为 webhook URL(例如http://noslack.com

    这样,在运行集成测试时,应用程序将尝试向 Slack 发送消息但失败,但由于它将在不同的线程中运行,因此不会影响应用程序本身。

    这不是一个 100% 完美的解决方案,因为应用程序的日志现在包含有关松弛调用的错误(在测试/开发阶段运行时)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2019-12-11
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多