0
我的askings_controller.rb在下面。Rspec,創建行動,預計已經改變了1,但被改爲0
class AskingsController < ApplicationController
before_action :authenticate_user! , only: [:new , :create , :destroy]
def create
@asking=Asking.create(asking_params) do |c|
c.user=current_user
end
if @asking.save
flash[:success] = "依頼に成功しました。"
redirect_to @asking
else
render 'askings/new'
end
end
end
我的工廠/ askings.rb在下面。
FactoryGirl.define do
factory :asking do
association :user
sequence(:content){|i| "お願いします#{i}"}
lang "english"
person 'ネイティブ限定'
sex '男性限定'
usepoint 1
finished false
title "MyString"
deadline "2017-1-12"
deadline_time 19
end
end
我的askings_contoller_spec.rb在下面。
require 'rails_helper'
RSpec.describe AskingsController, type: :controller do
describe 'when login user' do
context 'Post #create' do
before do
@user=create(:user)
login_user(@user)
end
let(:asking_params) {attributes_for(:asking)}
it 'should make askings +1' do
expect{post :create, asking: asking_params}.to change(Asking, :count).by(1)
end
end
end
我的模型/ ask.rb在下面。
class Asking < ActiveRecord::Base
belongs_to :user
validates :title , presence: true , length: {maximum: 80}
validates :content , presence: true , length: {maximum: 800}
validates :lang , presence: true
validates :usepoint , presence: true
validates :person , presence: true
validates :sex , presence: true
validates :deadline , presence: true
validates :deadline_time , presence: true
end
爲什麼我的錯誤「預期#COUNT由1變了,但由0改爲」? 當我從ask.rb中刪除'validates:deadline_time,presence:true'時,它可以工作。但我認爲這沒有錯。 請幫幫我。
謝謝您的評論!但我很抱歉,也許我不明白你的意思。在工廠/ askings.rb中,我用整數19顯示deadline_time。在提問模型中,我用整數顯示dealine_time的列。這是錯的嗎? –
我猜只要它們匹配數據類型就沒關係,但我認爲將時間保存爲整數而不是Time或DateTime有點不合常規。你可以通過粘貼這一行來創建一個有效的提問:'Asking.create!(lang:「english」,person:'ネイティブ限定',sex:'男性限定',usepoint:1,finished:false,title: 「MyString」,截止日期:「2017-1-12」,deadline_time:19)' – abax