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