导轨控制器测试中出现意外错误

问题描述 投票:0回答:1

我正在编写一个控制器测试来测试控制器操作,如下所示

require './spec/rails_helper'
require './spec/spec_helper'

RSpec.describe WeatherController, type: :controller do
  describe '#query' do
    it 'returns right template' do
      #get 'query_weather'
      #expect(response).to render_template(:query)
    end
  end
end

我的测试中实际上什么都没有。我的控制器操作也是空的。

 1) WeatherController#query returns right template
     Failure/Error: raise TypeError, "#{path.inspect} is not a valid path: must be a String, Pathname, or Resolver"

     TypeError:
       #<RSpec::Rails::ViewRendering::EmptyTemplateResolver::ResolverDecorator:0x00007fffe869b938 @resolver=#<ActionView::FileSystemResolver:0x00007fffe771fe28 @unbound_templates=#<Concurrent::Map:0x00007fffe771fe00 entries=0 default_proc=nil>, @path_parser=#<ActionView::Resolver::PathParser:0x00007fffe771fd88>, @path="/root/apple_weather/app/views">> is not a valid path: must be a String, Pathname, or Resolver
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/path_set.rb:79:in `block in typecast'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/path_set.rb:68:in `map'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/path_set.rb:68:in `typecast'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/path_set.rb:19:in `initialize'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/view_paths.rb:35:in `new'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/view_paths.rb:35:in `_build_view_paths'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/actionview-7.1.3/lib/action_view/view_paths.rb:69:in `view_paths='
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-rails-4.0.1/lib/rspec/rails/view_rendering.rb:153:in `block (2 levels) in <module:ViewRendering>'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:365:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:529:in `block in run_owned_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:528:in `each'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:528:in `run_owned_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:615:in `block in run_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:614:in `reverse_each'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:614:in `run_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:484:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:505:in `run_before_example'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:261:in `block in run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511:in `block in with_around_and_singleton_context_hooks'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468:in `block in with_around_example_hooks'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486:in `block in run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:626:in `block in run_around_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-rails-4.0.1/lib/rspec/rails/example/controller_example_group.rb:191:in `block (2 levels) in <module:ControllerExampleGroup>'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-rails-4.0.1/lib/rspec/rails/adapters.rb:75:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:629:in `run_around_example_hooks_for'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468:in `with_around_example_hooks'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511:in `with_around_and_singleton_context_hooks'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:259:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:646:in `block in run_examples'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `map'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `run_examples'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:607:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `block in run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `map'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `map'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb:2070:in `with_suite_hooks'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:116:in `block in run_specs'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb:74:in `report'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:115:in `run_specs'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:89:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:71:in `run'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:45:in `invoke'
     # /usr/local/rvm/gems/ruby-2.7.1/gems/rspec-core-3.12.2/exe/rspec:4:in `<top (required)>'
     # /usr/local/rvm/gems/ruby-2.7.1/bin/rspec:23:in `load'
     # /usr/local/rvm/gems/ruby-2.7.1/bin/rspec:23:in `<main>'
     # /usr/local/rvm/gems/ruby-2.7.1/bin/ruby_executable_hooks:24:in `eval'
     # /usr/local/rvm/gems/ruby-2.7.1/bin/ruby_executable_hooks:24:in `<main>'
     #
     #   Showing full backtrace because every line was filtered out.
     #   See docs for RSpec::Configuration#backtrace_exclusion_patterns and
     #   RSpec::Configuration#backtrace_inclusion_patterns for more information.

Finished in 0.06694 seconds (files took 2.13 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/controllers/weather_controller_spec.rb:6 # WeatherController#query returns right template

其他信息:Rails 版本:7.1.3

它没有指定代码中的哪一行在控制器或测试中被轰炸

我尝试过升级rspec

我已经按照模板创建了一个测试

ruby-on-rails testing rspec controller
1个回答
0
投票

如果您希望在控制器规格中渲染视图,则需要在控制器中使用

render_view

所以添加

render_view

就在描述块之前

© www.soinside.com 2019 - 2024. All rights reserved.