Ruby on Rails:RSpec 和 Acts As Audited(在测试时禁用acts_as_audited?)

Posted

技术标签:

【中文标题】Ruby on Rails:RSpec 和 Acts As Audited(在测试时禁用acts_as_audited?)【英文标题】:Ruby on Rails: RSpec and Acts As Audited (disabling acts_as_audited while testing?) 【发布时间】:2011-01-04 12:15:47 【问题描述】:

我遇到了一个错误,我认为可以通过以下方式解决 在运行测试时禁用acts_as_audited,或者至少是存根 审计清扫器中的 current_user。错误如下。你觉得我怎么样 应该怎么做?

NoMethodError in 'Order should create a new instance given valid attributes'
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.current_user
/home/ramon/rails/app/vendor/plugins/acts_as_audited/lib/acts_as_audited/audit_sweeper.rb:73:in `send'
/home/ramon/rails/app/vendor/plugins/acts_as_audited/lib/acts_as_audited/audit_sweeper.rb:73:in `current_user'
/home/ramon/rails/app/vendor/plugins/acts_as_audited/lib/acts_as_audited/audit_sweeper.rb:61:in `after_create'
./spec/models/order_spec.rb:13:

在 spec/models/order_spec.rb 中,我尝试对 AuditSweeper.current_user、template.current_user 和 controller.current_user 进行存根以返回模拟用户模型。没有工作。

感谢任何帮助。谢谢!

【问题讨论】:

spec/models/order_spec.rb:13 发生了什么? 【参考方案1】:

看起来好像 current_user 被调用的对象之一是 nil。所以存根当前用户将不起作用。您需要追踪 nil 对象并确保它已初始化。

【讨论】:

你是对的 - 这么简单的事情,我错过了。我会四处打听并尝试其他的东西。

以上是关于Ruby on Rails:RSpec 和 Acts As Audited(在测试时禁用acts_as_audited?)的主要内容,如果未能解决你的问题,请参考以下文章

ruby 来自https://stackoverflow.com/questions/19731295/ruby-on-rails-rspec-controller-tests-are-failing

如何在Ruby on Rails的autotest中使用本机OS X通知而不是growl?

AWS SNS 和 Ruby on Rails SMTP

禁用 ruby​​ on rails 作业进行测试

ruby [rspec]“使用RSpec测试Rails程序”笔记

ruby Rails Rspec模型使用rspec-rails,shoulda-matcher,shoulda-callbacks和factory_girl_rails测试骨架和备忘单。差不多