(Rails)PaperTrail和RSpec

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Rails)PaperTrail和RSpec相关的知识,希望对你有一定的参考价值。

我正在使用与RSpec测试一起使用的PaperTrail(Rails对象的自动版本控制)。通常我希望我的测试在没有PaperTrail版本的情况下运行,但是有一些测试我想要PaperTrail打开。我通常使用Guard和Spork运行我的测试,并且我可以在给定测试周围使用PaperTrail.enabled = truePaperTrail.enabled = false之类的东西,一切正常。

但是,当我使用RSpec运行测试时,需要PaperTrail的测试失败。更具体地说,虽然before过滤器中的代码可以生成版本对象,但测试中的代码却不能。经过大量的挖掘和修补以及尝试代码片段(我已经尝试过thisthis),看起来最好的解决方案是使用require "paper_trail/frameworks/rspec"中提到的PaperTrail README线。

不幸的是,每一个都让我保持正确的位置 - 测试通过Guard / Spork但不是vanilla RSpec。这尤其是一个问题,因为当我在本地使用Spork时,我们的连续集成服务器直接运行RSpec。

有没有人有任何见解?

答案

不知何故,我的问题是通过将before(:all)after(:all)行为改为before(:each)after(:each)来解决的。

另一答案

PaperTrail现在有关于使用vanilla rspec进行测试的文档

https://github.com/paper-trail-gem/paper_trail#7b-rspec

在你的require 'paper_trail/frameworks/rspec'中包括spec/rails_helpers.rb之后

...默认情况下,PaperTrail将关闭所有测试。要为测试启用PaperTrail,您可以将测试包装在with_versioning块中,或者将versioning: true选项传递给spec块。

以上是关于(Rails)PaperTrail和RSpec的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 has_many 的 PaperTrail 版本控制:通过在 Rails 4 中实现关联

ActionController::InvalidAuthenticityToken Rails 5 / 设计 / 审核 / PaperTrail gem

Circle CI 上的 Rspec 测试失败(Ruby on Rails 5.2.3)

Rails/Rspec:测试延迟作业邮件

Rails:在 RSpec 测试查看编辑表单时出错

使用 rspec 测试文件上传 - rails