Rspec 3 和 Fabricator - 控制器规格,无法创建新记录
Rspec 3 and Fabricator - controller spec, unable to create new record
我正在尝试解决这个问题,但没有成功。我将 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 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
你知道什么是解决方案吗?
好的,所以规格是正确的。我使用了错误的 Faker 元素 - Faker::Hipster.paragraphs
而不是 Faker::Hipster.paragraph
。第一个生成一个数组,第二个生成一个字符串。
我正在尝试解决这个问题,但没有成功。我将 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 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
你知道什么是解决方案吗?
好的,所以规格是正确的。我使用了错误的 Faker 元素 - Faker::Hipster.paragraphs
而不是 Faker::Hipster.paragraph
。第一个生成一个数组,第二个生成一个字符串。