新手问题 rspec 在 model 层的测试,应该怎么入手比较好?

QueXuQ · 2013年12月08日 · 最后由 allenlsy 回复于 2013年12月12日 · 2863 次阅读

controller 的测试会写了,也就是每一个 action 写一个 describe,然后看返回的 template 是否正确。

可是 model 的一般也知道怎么写了,例如判断是不是为必填字段的。

但是如果 model 里面有一个:

def self.xxx
end

或者

def xxx
end

应该怎么写测试比较好呢?看 ruby china 里面也没有完全覆盖测试,所以没搞懂这块,顺便搭车问个是不是 view 是不是不需要测试?

some code look like

context "#function" do 
    it 'should work' do 
    end
    it 'should raise x error when xxx' do 
   end
end

《Every Rails Testing with RSpec 中文版》

#2 楼 @winnie 买了,也看完了。model 层的讲的不是很多。就一点点而已。controller 比较详细。

一点简单的认识哈

  1. 看情况测试需要覆盖业务方法的 "验证" 部分,像满足啥啥啥才可执行。
  2. model 方法一般情况下需要覆盖成功与失败两个部分
  3. 针对成功与失败,会特别特别测试方法中调用前后的变化。例如值变化从 x->y, 调用了 xx 方法。这些都会在一个 spec 中,所以基本上一个 model 方法测试,会被一个大 context 包着"成功", 然后一个一个小的 "it xxx do" 包着一个一个期望得到的结果。

窃以为 rails4 自带的测试也很好用。我已经从 spec 换回来了。

我不喜欢完全覆盖测试。对自己很有信心的代码我是免测的。覆盖率不是特别重要的指标。view 层也是一样道理。我只测试稍微复杂些的 Ajax。个人意见,仅供参考

需要 登录 后方可回复, 如果你还没有账号请 注册新账号