【发布时间】:2014-10-17 17:11:50
【问题描述】:
我正在使用 rspec + FactoryGirl 来测试我的应用。
我有下一个测试
context "user cannot be destroyed" do
before(:each) do
@user = FactoryGirl.create :user
delete :destroy, {id: 1}, format: :json
end
it "render the json error when the user is not destroyed" do
user_response = JSON(response.body, symbolize_names: true)
expect(user_response[:errors][:message]).to include "User cannot be destroyed"
end
it {should respond_with 422}
end
当我运行测试时,我收到错误Couldn't find User with 'id'=1 两次。如果我更改 id {id: @user.id} 测试没有通过,我会得到下一个错误。
undefined method `[]' for nil:NilClass
和
Expected response to be a 422, but was 204
我测试的代码是
def destroy
user = User.find(params[:id])
if user.destroy
render json: {success: {:message => "User destroyed"} }, status: 204
else
render json: {errors: {:message => "User cannot be destroyed"} }, status: 422
end
end
所以,我有两个问题:
- 我该如何解决这个问题?
- 是否需要检查用户是否已被销毁? (如果 user.destroy ...)
如果第二个问题是假的,我想我的生活会更轻松。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rspec factory-bot