Rspec没有测试渲染,不允许我们进行存根渲染操作

时间:2016-12-14 20:30:01

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

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>

1 个答案:

答案 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