【问题标题】:(Rails) PaperTrail and RSpec(Rails) PaperTrail 和 RSpec
【发布时间】:2013-10-15 21:54:02
【问题描述】:

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

但是,当我使用 RSpec 运行测试时,需要 PaperTrail 的测试失败。更具体地说,似乎before 过滤器中的代码可以生成版本对象,而测试中的代码不能。经过大量的挖掘和修改并尝试了代码 sn-ps(我尝试过thisthis),看起来最好的解决方案是使用PaperTrail README 中提到的require "paper_trail/frameworks/rspec" 行。

不幸的是,这些中的每一个都让我从头开始——使用 Guard/Spork 测试通过,但没有通过香草 RSpec。这尤其是一个问题,因为当我在本地使用 Spork 时,我们的持续集成服务器直接运行 RSpec。

有人有什么见解吗?

【问题讨论】:

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


    【解决方案1】:

    通过将before(:all)after(:all) 行为更改为before(:each)after(:each) 以某种方式解决了我的问题。

    【讨论】:

      【解决方案2】:

      PaperTrail 现在有关于使用 vanilla 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 选项传递给规范块。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        相关资源
        最近更新 更多