使用RSpec 3和Rails 4在控制器测试中查找新创建的记录
我在Rails 4中做了一个控制器规范,我想测试由控制器动作创建的记录的属性。 如何找到新创建的记录?
例如,我可以做什么而不是
it 'Marks a new user as pending' do post :create, params # I don't want to use the following line user = User.last expect(user).to be_pending end
Rails指南仅简要讨论了控制器测试,其中提到测试Article.count
变化为1,而不是如何获得新的ActiveRecord模型。
在Rails 3中找到最新记录的问题是关于Rails 3。
我不愿意使用User.last
,因为默认排序可能是创建日期之外的其他内容。
如果控制器有一个名为@user
的实例变量,那么我们可以通过@user
assigns(:user)
在RSpec中访问它。
在控制器测试中比较records
或objects
不是一个好主意。 在控制器create
测试中,您应该测试正确的重定向和更改记录。
您可以在模型测试中轻松compare
对象,因为您可以轻松跟踪记录。
如果你的action
有一个保存record
的variable
,你仍然可以从测试中访问创建的record
在控制器中
def create @user = #assign user end
在测试中
assigns(:user).name.should eq "Name" # If it has a name attribute assigns(:user).pending.should be_true # I don't know how you implemented pending
你可以看看这篇文章