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'不在您提供的代码中,所以我只能根据我所看到的内容回答我的答案 –