BDD测试的结构

时间:2015-04-13 09:59:31

标签: ruby-on-rails ruby rspec

我正在挖掘Capybara和rspec,从TDD迁移到BDD。

我的生成器制作了大量的目录和规范测试,

目录结构与此类似:

     spec
        controllers
        models
        requests
        routing
        views

我认为大多数是TDD而不是BDD。如果我看了here

  

"一个很好的测试策略是广泛覆盖数据层   单元测试然后一直跳到验收测试。这种方法   提供了很好的代码覆盖率,并构建了一个可以用   改变代码库。"

然后我认为事情应该是完全不同的

以下内容:

     spec
         models
         acceptance

基本上我将控制器,请求,视图和路由选择用于在Capybara,Rspec的验收目录中实现测试作为用户案例场景。

这对我来说很有意义,虽然我不确定这是否是标准/通用方法。

你的方法是什么?

谢谢, 朱利奥

1 个答案:

答案 0 :(得分:1)

TL;博士 这不是标准方法。

如果您只测试模型和功能规格......那么您将错过中间的位。

你可以说:“方法X打破了Widget模型”或者你可以在创建小部件时告诉“有某些错误”,但你不知道其他任何事情。

如果出现问题,是控制器吗?路由?两者之间有什么交接?

很高兴:

  1. 在模型级别进行非常彻底的测试(例如,检查每个验证,每个方法,基于传入参数的每个选项)
  2. 在中间进行粗略测试,以确保子系统以您期望的方式工作(例如,控制器设置正确的变量,并在给定一定条件的情况下调用正确的模板/重定向)
  3. 作为烟雾测试的整体功能测试(例如,用户可以通过快乐的路径,一切都按照他们期望的方式工作......如果他们输入不好的东西,应用程序正在抛出正确的错误消息并重新显示他们解决问题的形式)
  4. 不要忘记模型不是应用程序中唯一的类..所有类都需要进行某种测试。控制器也是类。形式和服务对象,邮件等等。

    那就是说 - 通常认为视图测试过于频繁。我也不热衷于请求测试我自己的路由测试(除非我有一些复杂的东西,我想要正常工作,例如路线中有许多可选参数映射到有趣的搜索模式)