我正在编写一个控制器测试来测试控制器操作,如下所示
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
我已经按照模板创建了一个测试
如果您希望在控制器规格中渲染视图,则需要在控制器中使用
render_view
。
所以添加
render_view
就在描述块之前