如何使用RSpec测试新操作的初始化值?

时间:2017-08-01 08:57:10

标签: ruby-on-rails ruby rspec rspec-rails

在我的Ruby on Rails应用程序中,我有一个动作req,它复制copy并将其值呈现给invoice动作中的前端。

它有效,但我发现很难测试:

new

我只想测试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 是否被正确复制并显示在表单中。我是否必须先保存新发票才能进行测试?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

class YourController < ApplicationController
  def copy
   @new_invoice
  end
end

使用assigns来测试控制器中的实例变量,例如expect(assigns(:new_invoice).date).to eql(@invoice.date) 对于最新的RSpec版本,需要安装gem 'rails-controller-testing'才能使用assigns方法