0

私はRails 4、RSpec、FactoryGirl、Fakerなどを使ったスタディケースプロジェクトを持っています...

しかし、開発環境では、rspec テストがランダムに失敗しています。いろいろ調べているのですが、どなたか教えていただけると助かります。

テスト ファイル、ファクトリ、モデルへのリンクは次のとおりです。

失敗すると、常に次のようなスタックが生成されます。

 Failure/Error: @chloe = FactoryGirl.create(:user)
 ActiveRecord::RecordInvalid:
   translation missing: pt-BR.activerecord.errors.messages.record_invalid
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/validations.rb:57:in `save!'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/attribute_methods/dirty.rb:29:in `save!'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/transactions.rb:273:in `block in save!'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/transactions.rb:329:in `block in with_transaction_returning_status'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `block in transaction'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/connection_adapters/abstract/database_statements.rb:209:in `within_new_transaction'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `transaction'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/transactions.rb:208:in `transaction'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/transactions.rb:326:in `with_transaction_returning_status'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activerecord-4.1.8/lib/active_record/transactions.rb:273:in `save!'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/configuration.rb:14:in `block in initialize'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/evaluation.rb:15:in `[]'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/evaluation.rb:15:in `create'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/strategy/create.rb:12:in `block in result'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/strategy/create.rb:9:in `tap'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/strategy/create.rb:9:in `result'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:42:in `run'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:23:in `block in run'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353@global/gems/activesupport-4.1.8/lib/active_support/notifications.rb:161:in `instrument'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:22:in `run'
 # /Users/marceloboeira/.rvm/gems/ruby-2.0.0-p353/gems/factory_girl-4.5.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `block in define_singular_strategy_method'
 # ./spec/models/user_spec.rb:8:in `block (2 levels) in <top (required)>'
4

2 に答える 2

1

ロケールを Rails のデフォルト以外のものに変更したため、そのロケールに翻訳されていないエラーが発生しています。

簡単な回避策は、ロケールを一時的にデフォルトに戻すことです。これにより、実際のエラー メッセージが表示される可能性が高くなります (activerecordが何かを伝えようとしているように見えますが、 での言い方がわかりませんpt-BR)。このエラーは英語で表示されますが、英語を知っているようですので問題ありません。

エラーを修正し、ロケールを目的のロケールに戻すと、エラーは表示されなくなります。

ロケールの変更を避ける必要がある場合は、特定のエラーに対して選択したロケールに適した翻訳を追加する必要があります。このプロセスに役立つ情報源は他にもあります。関連情報へのリンクを次に示します。

更新: 暗闇の中のショットですが、特定のエラーは、初期化中に問題が発生した FactoryGirl に特に関係している可能性があります。. . この回答は、あなたの問題でうまくいくようです: https://stackoverflow.com/a/11644746/1026898

于 2015-01-16T13:33:06.530 に答える
0

問題は Faker でした。電子メールとユーザー名の値を制御できません。とにかく、Ecnalyr は問題の発見に大いに役立ちました :)

于 2015-01-17T19:32:34.853 に答える