Rails 6.1.3.1 R规范
基本行为规范代码:
describe "index" do
it "should show me the list" do
visit dashboard_targets_path
end
end
路由文件
namespace :dashboard do
resources :targets
end
该错误向我显示了异常,但奇怪的是,它似乎没有调用应用程序,只是在我的测试代码中失败了:
1) interaction for Dashboard::TargetsController index should show me the list
Failure/Error: visit dashboard_targets_path
NoMethodError:
undefined method `empty?' for nil:NilClass
# ./spec/system/dashboard/targets_behavior_spec.rb:16:in `block (3 levels) in <top (required)>'
# /Users/jason/.rvm/gems/ruby-2.6.6/gems/webmock-3.12.2/lib/webmock/rspec.rb:37:in `block (2 levels) in <main>'
# /Users/jason/.rvm/gems/ruby-2.6.6/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <main>'
测试代码内部似乎失败了,如果我进入调试器并直接运行 dashboard_targets_path
我也会得到相同的异常,所以问题只是在测试环境中使用助手
在开发环境中,此功能有效。
最佳答案
这里的问题是 config/environments/test.rb
文件确实有 default_url_options
.
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
当您遇到消失在 Rails gem 中的错误时,调试它们的好方法如下:
begin
// your failing code here
rescue StandardError => e
puts e.backtrace
byebug
puts e.inspect
raise (e)
end
警告:请勿将此代码留在您的应用程序中或将其 checkin ,除非您明确希望使用异常处理进行流量控制(不推荐!)。建议仅用于调试目的。
在这里,您将看到 Gem 中失败的行号的完整回溯。调试 Gems 时要小心 - 请记住撤消您所做的任何更改,并知道您在 Gem 代码中进行的猴子修补不会影响您的生产代码。
请注意,您可以运行 gem pristine <gem name>
或gem pristine --all
撤消对本地安装的 gem 所做的任何更改。
关于ruby-on-rails - 获取未定义的方法 `empty?' for nil :NilClass in my test suite when I try to call a Rails path helper (*_path) using Rails, Rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67268351/