我的askings_controller.rb在下面。
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
为什么我将'expected #count更改为1,但更改为0'的错误? 当我从ask.rb中删除'validates:deadline_time,presence:true'时,它可以工作。但我认为这没有错。 请帮帮我。
答案 0 :(得分:0)
在factories/askings.rb
中尝试匹配deadline_time列的格式。现在你有INT 19,也许尝试一个格式化时间的字符串(很高兴看到Asking的模式)。
快速编辑 - 我的想法是你的工厂没有提出有效的要求,因此计数没有增加。