Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec未测试渲染,赢得';我不允许我们采取行动_Ruby On Rails_Ruby_Unit Testing_Rspec - Fatal编程技术网

Ruby on rails Rspec未测试渲染,赢得';我不允许我们采取行动

Ruby on rails Rspec未测试渲染,赢得';我不允许我们采取行动,ruby-on-rails,ruby,unit-testing,rspec,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).t

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>'
应为,但呈现为
./spec/controllers/packages\u controller\u spec.rb:139:in'block(3层)in'
-e:1:在“加载”中
-e:1:in`'

我们曾尝试断言_模板,尝试使用stub_模板对其进行存根,安装了gemrails控制器测试(不是rspec),但我们已经没有想法了,每个谷歌链接都是紫色的。这是Rspec中的一个错误,还是我们走错了方向?

我认为刺伤是不正确的。尝试下面的代码,它应该可以工作

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

我认为刺伤是不正确的。尝试下面的代码,它应该可以工作

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

谢谢你的回复!我们仍然会遇到相同的错误:
预期但使用./spec/controllers/packages\u controller\u spec.rb:91:in
block(4层)in'-e:1:in
load'-e:1:in`
我认为我们需要存根渲染以提供代码覆盖率,但找不到方法。你有什么想法吗?这是有效的:
context'URI is invalid'Do before Do allow(PackageServices)。to receive(:getpackage)。and_raise(URI::InvalidURIError)end它'在404之后从GET#edit error'Do allow(controller)返回200。to receive(:确保登录)。and_return(true)GET:edit,params:{id:1}expect(response.code).to eq('200')expect(response).to render_template('errors/5xx')end
@rkentmc
确保_logged_
不在您提供的代码中,因此我只能根据刚才看到的内容来回答,以防其他人出现类似问题。我们没有调用正确的资源,在这种情况下,它将是我们get方法的一个实例。感谢您的响应!我们仍然会遇到相同的错误:
预期但使用./spec/controllers/packages\u controller\u spec.rb:91:in
block(4层)in'-e:1:in
load'-e:1:in`
我认为我们需要存根渲染以提供代码覆盖率,但找不到方法。你有什么想法吗?这是有效的:
context'URI is invalid'Do before Do allow(PackageServices)。to receive(:getpackage)。and_raise(URI::InvalidURIError)end它'在404之后从GET#edit error'Do allow(controller)返回200。to receive(:确保登录)。and_return(true)GET:edit,params:{id:1}expect(response.code).to eq('200')expect(response).to render_template('errors/5xx')end
@rkentmc
确保_logged_
不在您提供的代码中,因此我只能根据刚才看到的内容来回答,以防其他人出现类似问题。我们没有调用正确的资源,在本例中,它将是get方法的一个实例