次のようなテストがあります。
test "should get create" do
current_user = FactoryGirl.build(:user, email: 'not_saved_email@example.com')
assert_difference('Inquiry.count') do
post :create, FactoryGirl.build(:inquiry)
end
assert_not_nil assigns(:inquiry)
assert_response :redirect
end
これは、コントローラーのこの部分をテストしています。
def create
@inquiry = Inquiry.new(params[:inquiry])
@inquiry.user_id = current_user.id
if @inquiry.save
flash[:success] = "Inquiry Saved"
redirect_to root_path
else
render 'new'
end
end
そして工場:
FactoryGirl.define do
factory :inquiry do
product_id 2
description 'I have a question about....'
end
end
しかし、テストでエラーが発生し続けます:
1) Error:
test_should_get_create(InquiriesControllerTest):
RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
私は何を間違っていますか?私は current_user を設定する必要があり、私はテストに参加していると信じていますが、明らかに、それは機能していません。