我的一些Rspec测试真的很大(2000-5000行)。我只是想知道是否有人试图将这些测试分解为满足以下条件的多个文件:
目前,我已经成功地做了
#user_spec.rb
require 'spec_helper'
require File.expand_path("../user_spec1.rb", __FILE__)
include UserSpec
#user_spec1.rb
module UserSpec do
describe User do
..
end
end
答案 0 :(得分:6)
如果你的规格太大,你的模型可能也太大了 - 因为你在这里使用了“UserSpec”,你可以说你的用户类是“God class”。也就是说,它做得太多了。
所以,我会把它分解成更小的类,每个类都有一个单一的责任。然后,单独测试这些类。
你可能会发现你的User类知道如何在你的系统中执行大多数逻辑 - 这是一个容易陷入的陷阱,但是如果你把你的逻辑放在一个以用户为一个类的类中就可以避免争论......如果你坚持遵守demeter定律(你的用户类只能触及它下面的1级,而不是2级)。
进一步阅读:http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html