(Rails) PaperTrail 和 RSpec

10
我在使用PaperTrail(Rails的对象自动版本控制)与RSpec测试时遇到了问题。通常情况下,我希望我的测试在没有PaperTrail版本控制的情况下运行,但是有一些测试需要开启PaperTrail。我通常使用Guard和Spork来运行我的测试,并且可以在给定的测试周围使用PaperTrail.enabled = truePaperTrail.enabled = false等内容,一切都可以正常工作。
然而,当我使用RSpec运行测试时,需要PaperTrail的测试失败了。更具体地说,似乎虽然before过滤器中的代码可以产生版本对象,但测试中的代码却不能。经过大量挖掘、调试和尝试代码片段(我尝试了thisthis),看起来最好的解决方案是使用PaperTrail README中提到的require "paper_trail/frameworks/rspec"行。
不幸的是,每个解决方案都让我回到了起点——使用Guard/Spork测试通过,但使用普通的RSpec测试未能通过。这是一个特别的问题,因为虽然我在本地使用Spork,但我们的持续集成服务器直接运行RSpec。
有人有什么见解吗?
2个回答

15

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

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

在你的spec/rails_helpers.rb文件中加入require 'paper_trail/frameworks/rspec'后,

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


2
一些问题通过将 before(:all)after(:all) 的行为更改为 before(:each)after(:each) 得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接