0
Rails的5.0.0.1 Rspec的3.5.4 紅寶石2.3.1Rspec的不是測試渲染,不會讓我們存根渲染動作
我們一直在努力爲我們的Rails應用程序提供的測試覆蓋率。我們用Rspec未能達成的私人方法進行救援。
Rspec的:
it 'returns 200 after 404 from GET #edit error' do
allow(controller).to receive(:getpackages).and_return(URI::InvalidURIError)
expect(response.code).to eq(200) # => covers the 200
expect(response).to render_template('errors/5xx') # => doesn't read
end
的Rails:
private
def set_package
@package = PackageServices.getpackage params[:id]
rescue URI::InvalidURIError
render 'errors/5xx'
end
錯誤消息:
expecting <"errors/5xx"> but rendering with <[]>
./spec/controllers/packages_controller_spec.rb:139:in `block (3 levels) in <top (required)>'
-e:1:in `load'
-e:1:in `<main>'
我們試圖assert_template,試圖用它stub_template存根,安裝了寶石rails-控制器測試(不是rspec),但我們已經用完了想法,每個谷歌鏈接都是紫色的。這是Rspec中的一個錯誤還是我們錯誤的方式?
感謝您的迴應!我們仍然收到相同的錯誤:
expecting <"errors/5xx"> but rendering with <[]> ./spec/controllers/packages_controller_spec.rb:91:in 'block (4 levels) in' -e:1:in 'load' -e:1:in ''
我認爲我們需要存儲渲染以提供代碼覆蓋率,但無法找到解決方法。你有什麼想法? – rkentmc這工作:'上下文 'URI無效' 做 做 之前允許(PackageServices)。爲了接收(:getpackage).and_raise(URI :: InvalidURIError) 結束 這404之後,從GET #edit返回錯誤200 'do allow(controller).to receive(:ensure_logged_in).and_return(true) get:edit,params:{id:1} expect(response.code).to eq('200') expect(response ).to render_template('errors/5xx') end end' – rkentmc
@rkentmc'ensure_logged_in'不在您提供的代碼中,所以我只能根據我所看到的內容回答我的答案 –