多年来,我一直在使用多种语言进行编程,并且喜欢认为我通常很擅长它。但是,我从未编写过任何自动化测试:没有单元测试,没有 TDD,没有 BDD,什么都没有。
我试图开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中的所有代码的理论价值。我可以看到像 RSpec 和 Mocha 这样的测试框架应该如何使设置和运行上述测试相当容易,我喜欢它们为编写测试提供的 DSL。
但我从未设法为我的代码的任何部分编写实际的单元测试。我写的东西似乎从来没有以实际有用的方式进行测试。
- 在使用它们的上下文之外,函数似乎不是非常可调用的。我编写的许多函数都会进行 HTTP 请求调用、数据库查询或其他一些不易测试的调用。
- 一些函数返回 HTML 字符串。我可以将 HTML 字符串与同一字符串的硬编码版本进行比较,但这似乎只会限制我更改该部分代码的能力。再加上在我的测试代码中有大量的 HTML 是一团糟。
- 我可以将模拟/间谍对象传递给一个方法,并确保它们得到某些方法调用,但据我所知,这只是测试我正在“测试”的方法的实现细节。
我将如何开始正确的 BDD 测试?(我更喜欢使用 Mocha 和 Node.js 来做这件事,但是关于 BDD 的一般建议也很好。)