在我的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
是否被正确复制并显示在表单中。我是否必须先保存新发票才能进行测试?
感谢您的帮助。
答案 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
方法