关于使用模拟与否的争论及其困惑
💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
在讨论是否使用模拟时,常忽视细微差别。对于无副作用的语言如Elm或Haskell,只需测试返回值和验收测试副作用。而在TypeScript和Angular等面向对象语言中,通常使用模拟来测试副作用。函数式编程者主张“测试代码而非模拟”,但在允许副作用的语言中,他们可能会使用两种单元测试或存根和验收测试。面向对象开发者则强调测试行为而非实现细节。
🎯
关键要点
- 在模拟与不模拟的讨论中,常常忽视细微差别,导致混淆。
- 在Elm或Haskell等无副作用的语言中,不需要使用模拟,只需测试返回值和验收测试副作用。
- 在TypeScript和Angular等面向对象语言中,通常使用模拟来测试副作用,测试代码时往往忽略返回值。
- 函数式编程者主张“测试代码而非模拟”,但在允许副作用的语言中,他们可能会使用两种单元测试或存根和验收测试。
- 面向对象开发者强调测试行为而非实现细节,但在不支持这种测试的语言中,这种观点可能不成立。
- 当函数式编程开发者在非FP语言中工作时,他们可能会采用两种不同的测试方法来处理返回值和副作用。
- 面向对象开发者在语言不支持测试行为时,可能会忽视实现细节的测试。
- 在允许副作用的语言中,测试方法的选择和实现可能会影响代码的可维护性和测试的有效性。
➡️