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

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

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 。个人意见,仅供参考

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