2016-03-27 9 views
0

Ich versuche, dies ohne Erfolg zu lösen. Ich verwende RSpec mit Faricator und kann keine Tests bestehen. Das Problem tritt in create action auf. Update (mit ähnlicher Syntax) funktioniert gut. Von Website-Formular funktioniert alles richtig, so glaube ich, dass es ein Problem mit den Spezifikationen ist. spec Controller:Rspec 3 und Fabricator - Controller-Spezifikation, kann keinen neuen Datensatz erstellen

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 Methode meldet Benutzer als Admin. Ich habe überprüft, mit Pry, dass die Protokollierung korrekt ist und der angemeldete Benutzer ist ein Administrator. Director Controller:

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 

Wissen Sie, was Lösung für das sein könnte?

+0

Wenn der POST ausgeführt wird, folgt der Pfad, der dem Befehl 'flash [: danger]' zugewiesen wurde? Wenn ja, wie lautet die Ausgabe von 'assigns (: director) .errors' im kommentierten binding.pry-Speicherort? –

+0

bekam: => # , @messages = {: bio => [Kann nicht sein leer. "]}> Es scheint, dass Faker :: Hipster.paragraphen nicht funktioniert. Ich habe es zu Faker :: Lorem.paragraph geändert und es hat gut funktioniert! Danke Ben für Hilfe! – wbucko

Antwort

1

Ok, also Angaben sind korrekt. Ich habe falsches Faker-Element verwendet - Faker::Hipster.paragraphs anstelle von Faker::Hipster.paragraph. Die erste erzeugte ein Array und die zweite eine Zeichenfolge.