关于使用模拟与否的争论及其困惑

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

在讨论是否使用模拟时,常忽视细微差别。对于无副作用的语言如Elm或Haskell,只需测试返回值和验收测试副作用。而在TypeScript和Angular等面向对象语言中,通常使用模拟来测试副作用。函数式编程者主张“测试代码而非模拟”,但在允许副作用的语言中,他们可能会使用两种单元测试或存根和验收测试。面向对象开发者则强调测试行为而非实现细节。

🎯

关键要点

  • 在模拟与不模拟的讨论中,常常忽视细微差别,导致混淆。
  • 在Elm或Haskell等无副作用的语言中,不需要使用模拟,只需测试返回值和验收测试副作用。
  • 在TypeScript和Angular等面向对象语言中,通常使用模拟来测试副作用,测试代码时往往忽略返回值。
  • 函数式编程者主张“测试代码而非模拟”,但在允许副作用的语言中,他们可能会使用两种单元测试或存根和验收测试。
  • 面向对象开发者强调测试行为而非实现细节,但在不支持这种测试的语言中,这种观点可能不成立。
  • 当函数式编程开发者在非FP语言中工作时,他们可能会采用两种不同的测试方法来处理返回值和副作用。
  • 面向对象开发者在语言不支持测试行为时,可能会忽视实现细节的测试。
  • 在允许副作用的语言中,测试方法的选择和实现可能会影响代码的可维护性和测试的有效性。
➡️

继续阅读