2016-12-30 67 views
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'時,它可以工作。但我認爲這沒有錯。 請幫幫我。

回答

0

factories/askings.rb嘗試匹配deadline_time列的格式。現在你有INT 19,也許嘗試一個格式化爲時間的字符串(很高興看到Asking的架構)。

快速編輯 - 我的想法是,你的工廠沒有提出有效的詢問,因此計數沒有增加。

+0

謝謝您的評論!但我很抱歉,也許我不明白你的意思。在工廠/ askings.rb中,我用整數19顯示deadline_time。在提問模型中,我用整數顯示dealine_time的列。這是錯的嗎? –

+0

我猜只要它們匹配數據類型就沒關係,但我認爲將時間保存爲整數而不是Time或DateTime有點不合常規。你可以通過粘貼這一行來創建一個有效的提問:'Asking.create!(lang:「english」,person:'ネイティブ限定',sex:'男性限定',usepoint:1,finished:false,title: 「MyString」,截止日期:「2017-1-12」,deadline_time:19)' – abax

相關問題