为什么模拟很糟糕

  • Main观点:开发者喜爱 mocking,但它被过度使用且危险,会掩盖系统问题,应停止依赖 mock,使用真实服务版本。
  • 关键信息

    • mocking 能模拟外部服务、加快测试、避免 API 开销,但会欺骗开发者,使测试与生产环境脱节。
    • 必要时 mocking 可解决现代软件开发中的问题,如测试失败场景、解决延迟问题、模拟未准备好的外部服务。
    • mocking 在模拟简单、孤立的服务时效果较好,但在复杂工作流中会失效,如 Stripe 和 Auth0 的例子。
    • mocking 会产生虚假安全感、增加维护开销、鼓励不良测试实践、使开发者脱离现实、成为复杂系统的反模式、阻碍真实开发体验。
    • 本地优先开发(local-first development)趋势兴起,如使用 Firebase Emulator Suite 和 FusionAuth Kickstart 来替代 mocking,提供真实的开发环境。
  • 重要细节

    • 在 Python 中,通过 unittest.mock 库进行 mocking 示例,如测试 Stripe 注册功能。
    • 列举 mocking 的多个问题,如无法捕获服务变化、增加维护成本、导致测试不可靠等。
    • 介绍 Firebase Emulator Suite 的安装配置和使用方法,以及与 mocking 的对比。
    • 阐述 FusionAuth Kickstart 的作用和使用步骤,包括创建 Kickstart 文件、下载文件、启动容器、配置和定制服务等。
    • 给出使用真实服务进行测试的好处,如更好的生产一致性、降低维护成本、准确测试和提升开发者信心。
阅读 8
0 条评论