(Rails)PaperTrail和RSpec
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Rails)PaperTrail和RSpec相关的知识,希望对你有一定的参考价值。
我正在使用与RSpec测试一起使用的PaperTrail(Rails对象的自动版本控制)。通常我希望我的测试在没有PaperTrail版本的情况下运行,但是有一些测试我想要PaperTrail打开。我通常使用Guard和Spork运行我的测试,并且我可以在给定测试周围使用PaperTrail.enabled = true
和PaperTrail.enabled = false
之类的东西,一切正常。
但是,当我使用RSpec运行测试时,需要PaperTrail的测试失败。更具体地说,虽然before
过滤器中的代码可以生成版本对象,但测试中的代码却不能。经过大量的挖掘和修补以及尝试代码片段(我已经尝试过this和this),看起来最好的解决方案是使用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