(Rails)PaperTrail和RSpec

时间:2013-10-08 19:39:31

标签: ruby-on-rails rspec guard spork paper-trail-gem

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

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

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

有没有人有任何见解?

2 个答案:

答案 0 :(得分:2)

通过将before(:all)after(:all)行为更改为before(:each)after(:each),我的问题得到了解决。

答案 1 :(得分:0)

PaperTrail现在具有使用香草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块。