(Rails)PaperTrail和RSpec

问题描述 投票:3回答:2

我正在使用与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。

有没有人有任何见解?

ruby-on-rails rspec guard spork paper-trail-gem
2个回答
2
投票

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


0
投票

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块。

© www.soinside.com 2019 - 2024. All rights reserved.