相关文章推荐
  • 为了不在测试环境中使用 curl 对外部环境发起请求,之前在写这个测试时将 curl 用一个私有函数 downloader/2 包装了一下,并当作公共函数的依赖注入进去,在测试时则注入一个构造好的 failure_downloader/2 Stub 失败时的行为。
  • 而同事在写 Stub 部分时忘记了将 failure_downloader/2 注入进去了,即在测试时依然会正常发起 curl 请求。
  • 同事又按照测试环境下 curl example.org 的请求返回,写了 assertion 。因此这个测试在 CI 和其他同事的机器上都能正常通过。
  • 而 Surge 在某一次更新后,对 example.org 的处理与正常情况下并不一致,导致了这个测试在我的机器上正常了一段时间后失败。
  • 种种巧合导致了这个问题,我觉得也算一件趣事。 P.S. 最后,我又好奇问同事这个 Module 在线上有没有出问题,结果他说线上环境还没有用到这个 Module。(YAGNI 2 的又一体现) We need to constantly check the test results. - Growing Object-Oriented Software Guided by Tests Test Double - Our Thinking - How to stop hating your tests.
     
    推荐文章