3

RSpecでテストしているRailsの宝石があります。私のgemのコードはlib/my_gemにあり、gemを作成したときにRailsが生成したテストアプリケーションがtest/dummyフォルダーにあります。test / dummy / spec / models/task_spec.rbに仕様があります。rspecコマンドを使用して、これらの仕様を正常に実行できます。

今度は、テストにSporkとGuardを使用したいと思いました。RailsCasts http://railscasts.com/episodes/285-sporkに従って、テスト/ダミーアプリにsporkをインストールしました。それは機能しますが、2つの問題があります:

  • sporkにlib/my_gem / *ファイルをリロードさせる方法は?../../lib/my_gem/...のようなパスをGuardfileに入れようとしましたが、ファイルを監視/再ロードしません。
  • 何らかの理由で、rspecはspec_helperからのオプションを無視しています。たとえば、「config.filter_run:focus=>true」行です。私はこれらをSpork.preforkに適切に入れました。この設定は、rspec spec / models / task_spec.rbを使用してrspecを手動で実行すると機能しますが、guard/sporkを使用すると無視されます。
4

3 に答える 3

1

私はついに問題を解決することができました。重要なのは、test/dummy からではなく、ルート ディレクトリからテストを実行することです。私の宝石のクローンを作成すると、私の設定を確認できますhttps://github.com/mrbrdo/has_moderated キーは Guardfile (test/dummy へのパスに注意)、Rakefile (spec タスク)、および両方の spec_helper にあると思います。 rb ファイル (spec/ に 1 つ、test/dummy/spec に 1 つ)。何か他のものが必要であるとわかった場合は、遠慮なくコメントしてください。

于 2012-10-31T17:21:59.313 に答える
1

通常、開発環境config.cache_classesでは に設定されていtrueます。spork を使用している場合は、このオプションを無効にする必要があります。詳細については、./config/environments/test.rbファイルを参照してください。

代わりにconfig.filter_run :focus => trueRSpec のタグを使用してみてください: https://www.relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option

于 2012-05-21T22:10:37.283 に答える
0

Spring には、Rails Engine を開発する際の使用方法に関するドキュメントが含まれるようになりました。https://github.com/rails/spring#application-root

テスト アプリのルートを見つける場所を指定するだけです。

Spring.application_root = './test/dummy'
于 2015-01-13T18:11:03.393 に答える