My spec/controllers/askings_spec.rbは以下のとおりです。作成アクションのRspecエラー
require 'rails_helper'
RSpec.describe AskingsController, type: :controller do
describe'Post #create' do
before do
@user=create(:user)
login_user(@user)
end
let(:asking_params) do
attributes_for(:asking)
end
it 'should make askings +1' do
expect{post :create, asking: asking_params}.to change(Asking, :count).by(1)
end
it 'create response' do
post :create, asking: asking_params
expect(response).to redirect_to(assigns(:asking))
end
end
と私のモデル/ asking.rbは以下のとおりです。
と私のrspec/factories/askings.rbは以下のとおりです。
FactoryGirl.define do
factory :asking do
association :user
title "MyString"
content "お願いします"
lang "english"
person 'ネイティブ限定'
sex '男性限定'
usepoint 1
finished false
deadline "2017-1-12"
deadline_time 1
end
end
私はレールコンソールで以下に(つまり工場を求めている)、それは成功だラインを通過しました。
Asking.create!(:title=>"MyString", :content=>"お願いします", :lang=>"english", :person=>"ネイティブ限定", :sex=>"男性限定", :usepoint=>1, :finished=>false, :deadline=>"2017-1-12", :deadline_time=>1)
しかし、私はrspec/controllersにエラーがあります。
expected #count to have changed by 1, but was changed by 0
以下。
Expected response to be a <redirect>, but was <200>
私が削除
は '検証:deadline_time、プレゼンス:true' のモデル/ asking.rbからは、RSpecのがエラーを持っていません。だから私はエラーがdeadline_timeの原因と思う。レールコンソールでは動作します。なぜ私はそのようなエラーがありますか?私を助けてください。と私のaskings_controller.rbは以下のとおりです。
require 'time'
class AskingsController < ApplicationController
before_action :authenticate_user! , only: [:new , :create , :destroy]
def create
@asking=Asking.new(asking_params) do |c|
c.user=current_user
end
if @asking.save
flash[:success] = "依頼に成功しました。"
redirect_to @asking
else
render 'askings/new'
end
end
private
def asking_params
params.require(:asking).permit(:title, :content , :lang, :person , :sex , :usepoint , :deadline)
end
end
を変更してみてくださいだけでなく、コントローラのコードを投稿してください。 – 31piy
申し訳ありませんが、私はコントローラコードを追加しました。 –