拿这个完全是香草控制器的行动,例如:
def create @event = Event.new(params[:event]) if @event.save flash[:notice] = "Event successfully created." redirect_to events_path else render :action => 'new' end end
只是生成的脚手架.我们在这里没有什么不寻常的事情.为什么写这个操作的控制器测试很重要?毕竟,我们甚至没有写代码 – 发电机为我们做了工作.除非在rails中有一个bug,否则这段代码应该是正常的.似乎测试这个动作并不是完全不同于测试,比如说collection_select,我们不会这样做.此外,假设我们使用黄瓜,我们应该已经涵盖了基础知识(例如重定向在哪里).
对于简单的模型方法也可以这样说.例如:
def full_name "#{first_name} #{last_name}" end
我们真的需要为这样简单的方法编写测试?如果有语法错误,您将在页面刷新时捕获它.同样,黄瓜会抓住这一点,只要你的功能打到任何一个称为full_name方法的页面.显然,我们不应该依靠黄瓜做任何太复杂的事情.但是,full_name是否真的需要单元测试?
你可能会说,因为代码很简单,测试也很简单.所以你也可以写一个测试,因为它只需要一分钟.但似乎写作基本上无价值的测试可以做更多的伤害比好.例如,它们混淆了您的规格,使得更难专注于实际重要的复杂测试.此外,他们需要时间运行(尽管可能不太多).
但是,就像我说的,我几乎不是专家测试员.我不一定主张减少测试覆盖.相反,我正在寻找一些专家建议.有没有真正的理由来写这样简单的测试?
解决方法
对我来说,测试方法有三件事情:
他们保证不间断的旧功能如果我可以检查
没有什么新的,我放在已经破了
我的旧事通过运行测试,就是这样
一件好事
当我重写旧东西时,他们让我感到安全
重构很少是微不足道的
一.但是,如果我想重构
不平凡的代码,有测试
确保我的重构没有
破坏任何行为是必须的.
>他们是我的工作的文档不寻常的代码需要
记录.但是,如果您同意
与我在代码中的意见是
恶魔的工作,有明确的
简单的单元测试,使你
了解什么是正确的行为
某事是,(再)一个必须.
任何我确信我不会打破,或者我觉得不合格的文件,我根本不浪费时间测试.您生成的控制器和模型方法,那么,即使没有单元测试,我也会说这些都很好.