【问题标题】:Rspec 3 and Fabricator - controller spec, unable to create new recordRspec 3 和 Fabricator - 控制器规范,无法创建新记录
【发布时间】:2016-03-27 16:15:33
【问题描述】:

我正在尝试解决这个问题,但没有成功。我正在将 RSpec 与 Faricator 一起使用,但无法通过测试。问题出现在创建操作中。更新(使用类似的语法)工作得很好。从网站的形式来看,一切正常,所以我认为规格相当有问题。 控制器规格:

describe 'POST #create' do 
  before { set_current_admin admin }
  context 'admin users' do 
    context 'a successful create' do 
      before do 
        post :create, director: Fabricate.attributes_for(:director)
      end

      it 'saves new director object' do  
        #require 'pry'; binding.pry
        expect(Director.count).to eq(1)
      end

      it 'redirects to directors path' do 
        expect(response).to redirect_to directors_path
      end

      it 'sets a successful flash message' do 
        expect(flash[:success]).to eq('Reżyser został zapisany.')
      end
    end
  end  
end

set_current_admin 管理方法将用户记录为管理员。我已经使用 pry 检查了日志记录是否正确,并且登录的用户是管理员。总监控制器:

class DirectorsController < ApplicationController
  before_action :set_director, only: [:edit, :update, :destroy, :show]
  before_action :admin_user, except: [:index, :show]

  def create
    @director = Director.new(directors_params)
    if @director.save
        flash[:success] = 'Reżyser został zapisany.'
        redirect_to directors_path
    else
        flash[:danger] = 'Coś poszło nie tak, spróbuj ponownie.'
        render :new
    end
  end

你知道有什么解决办法吗?

【问题讨论】:

  • 执行 POST 时,所遵循的路径是分配给flash[:danger] 的路径吗?如果是这样,注释的 binding.pry 位置中assigns(:director).errors 的输出是什么?
  • got: => #<:errors:0x00000002bcfca8 id: nil name: bana created_at: updated_at: photo_url: href="https://robohash.org/sitdoloret.png?size=300x300&set=set1" rel="nofollow" target="_blank">robohash.org/sitdoloret.png?size=300x300&set=set1", 出生: Sun, 04 Apr 1965, bio: nil>, @messages={:bio=>["Can't be blank."]}> Faker::Hipster.paragraphs 似乎没有工作。我已将其更改为 Faker::Lorem.paragraph 并且运行良好!谢谢本的帮助!

标签: ruby-on-rails ruby-on-rails-4 rspec fabrication-gem


【解决方案1】:

好的,所以规格是正确的。我使用了错误的 Faker 元素 - Faker::Hipster.paragraphs 而不是 Faker::Hipster.paragraph。第一个生成一个数组,第二个生成一个字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多