2017-08-01 2 views
0

Dans mon application Ruby on Rails, j'ai une action copy qui copie un invoice et rend ses valeurs au frontend dans une action new.Comment tester les valeurs d'initialisation d'une nouvelle action avec RSpec?

Il fonctionne, mais je trouve difficile à tester:

describe 'GET #copy' do 

    before :each do 
    @invoice = FactoryGirl.create(:invoice, :date => Date.yesterday) 
    end 

    it "renders the :new template" do # this works 
    get :copy, :id => @invoice 
    expect(response).to render_template :new 
    end 

    it "sets the correct date" do 
    get :copy, :id => @invoice 
    expect(new_invoice.date).to eql(@invoice.date) # what I had in mind... 
    end 

end 

Je voudrais simplement tester si le date est copié correctement et est représentée sous la forme. Dois-je d'abord enregistrer la nouvelle facture pour la tester?

Merci pour toute aide.

Répondre

1
class YourController < ApplicationController 
    def copy 
    @new_invoice 
    end 
end 

Utilisez assigns pour tester les variables d'instance dans votre contrôleur, comme expect(assigns(:new_invoice).date).to eql(@invoice.date) Pour dernière version RSpec, besoin d'installer gem 'rails-controller-testing' pour l'utilisation assigns méthode

+0

C'est tout, merci beaucoup! – Tintin81