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

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

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

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

但是如果model里面有一个:

def self.xxx
end

或者

def xxx
end

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

共收到 6 条回复

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

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