我的测试破坏的次数大多数是在控制器中,因为我不知道如何在夹具中正确组织模型以使其易于维护。很多时候我不得不重新组织灯具并重写控制器测试。
有没有人有一些提示来帮助我?
(有些人认为我们不应该为控制器编写测试,但我认为这不是一个好主意)
答案 0 :(得分:0)
你绝对应该测试你的控制器。就个人而言,我的控制器非常小巧,因此测试本身非常简单。
你的控制器测试不应该关心模型逻辑或内容,如果他们这样做,你就会测试错误的东西。
使用rspec可以测试如下内容:
Model.any_instance.should_receive(:foo)
显然你需要模型在那里Model.find(id)
返回一些东西,但是你可以在不需要模型的情况下做到这一点。模拟数据库交互是一种选择,使用fixture是另一种选择。
个人偏好是使用FactoryGirl。它使用简单并且不碍事,所以在您的控制器测试中,您可以这样做:
user = FactoryGirl.create(:user, username: "foo", name: "bar")
get :search, username: "foo"
assigns(:user).should == user
只要控制器返回正确的内容,模型中的方式或内容并不重要。