6

RSpec テストで使用されているPaperTrail (Rails のオブジェクトの自動バージョン管理) に問題があります。通常、PaperTrail のバージョン管理なしでテストを実行したいのですが、PaperTrail を有効にしたいテストがいくつかあります。私は通常、Guard と Spork を使用してテストを実行します。特定のテストのようなものPaperTrail.enabled = truePaperTrail.enabled = falseその周辺で使用でき、すべて正常に動作します。

しかし、RSpec でテストを実行すると、PaperTrail を必要とするテストが失敗します。より具体的には、beforeフィルター内のコードはバージョン オブジェクトを生成できますが、テスト内のコードは生成できないようです。かなりの量のコードスニペットを掘り下げ、いじり、試した後 (私はthisthisを試しました)、最適な解決策はPaperTrail READMErequire "paper_trail/frameworks/rspec"に記載されている行を使用することです。

残念なことに、これらのそれぞれは、私が始めたところから正しい状態を保っています — テストは Guard/Spork でパスしますが、通常の RSpec ではパスしません。私はローカルで Spork を使用していますが、継続的インテグレーション サーバーは RSpec を直接実行しているため、これは特に問題です。

誰にも洞察力がありますか?

4

2 に答える 2

8

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

于 2018-09-01T00:19:00.620 に答える
2

before(:all)と のafter(:all)動作をbefore(:each)とに変更することで、どういうわけか私の問題は修正されましたafter(:each)

于 2013-10-14T16:03:04.990 に答える