关于在Rails中组织灯具的提示?

时间:2014-07-03 13:10:34

标签: ruby-on-rails unit-testing controller tdd fixtures

我的测试破坏的次数大多数是在控制器中,因为我不知道如何在夹具中正确组织模型以使其易于维护。很多时候我不得不重新组织灯具并重写控制器测试。

有没有人有一些提示来帮助我?

(有些人认为我们不应该为控制器编写测试,但我认为这不是一个好主意)

1 个答案:

答案 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

只要控制器返回正确的内容,模型中的方式或内容并不重要。