测试驱动开发:从直接模型访问到模拟浏览器测试
1. 直接模型访问(Direct Model Access)概述
直接模型访问(Direct Model Access,简称 DMA)的步骤定义执行速度快,不过这种速度和隔离性是有代价的。它无法充分保证应用程序能正常工作,并且除了那些在后续章节中会用细粒度的 RSpec 代码示例捕获的错误外,它不太可能捕获到其他错误。
不过,DMA 步骤定义有助于客户和开发人员之间的沟通,如果未来模型内部的逻辑被破坏,它还能捕捉到回归问题。因此,当通过完整的堆栈驱动系统的所有细粒度行为过于繁琐时,DMA 步骤定义对于测试系统的细粒度行为非常有用。
1.1 使用建议
- 一般情况 :通常建议在 Given 步骤中使用直接模型访问。
- 特殊情况 :对于需要设置浏览器会话状态的操作(如登录),应使用模拟浏览器(Simulated Browser)。
- JavaScript 或 Ajax 情况 :如果存在 JavaScript 或 Ajax,在 When 和 Then 步骤中添加使用自动化浏览器(Automated Browser)方法的场景,用于正常流程和关键的不常见路径。这样做的附加价值是可以测试客户端代码,所以当不需要客户端代码时,就没有必要使用浏览器。
- 边缘情况 :对于会产生许多边缘情况的功能,可以通过 Rails 堆栈驱动其中一些情况,其余的则完全使用直接模型访问。
超级会员免费看
订阅专栏 解锁全文
3373

被折叠的 条评论
为什么被折叠?



