2016-12-30 62 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

相关问题