Rails 5.0.0.1 Rspec 3.5.4 Ruby 2.3.1
我们一直在努力为我们的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
滑轨:
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对其进行存根,安装了gem rails-controller-testing(而不是rspec),但是我们已经没有想法,而且每个google链接都是紫色的。这是Rspec中的一个错误还是我们以错误的方式处理它?</ p>
答案 0 :(得分:0)
我认为刺伤是不正确的。尝试以下代码,它应该可以工作。
context 'URI is invalid' do
before do
allow(PackageServices).toreceive(:getpackage).and_raise(URI::InvalidURIError)
end
it 'returns 200 after 404 from GET #edit error' do
expect(response.code).to eq(200) # => covers the 200
expect(response).to render_template('errors/5xx') # => doesn't read
end
end