2012-02-06 8 views
0

井戸 - 私自身の質問に(回顧して)答える - 'あなたの6を見る';過去の設定、定義、小さなパッチがあなたの上に潜入する可能性があることを意味します。プロンプトでテストが失敗し、レールコンソールを通過するのはなぜですか?

私の場合は、私のすべてのモデルデフォルトスコープ私を助ける環境変数は、犯人だった!

この私がときすくいスペックとミルの実行時に失敗した

OX_ID=1 RAILS_ENV=test r c 

とstartet、この出力を提供するまったく同じテストは、レールコンソールに渡すことを証明しようと、このgist文書は:

Running spec/models/user_spec.rb 
....F 


Failures: 

    1) User should have 1 role through user_group 
    Failure/Error: permission = Factory.create(:roleable, authorization: "all", ox: @ox, role: role) 
    ActiveRecord::RecordInvalid: 
     Validering fejlede: Ox skal udfyldes 
    # ./spec/factories/factories.rb:28:in `block (3 levels) in <top (required)>' 
    # ./spec/models/user_spec.rb:60:in `block (2 levels) in <top (required)>' 

Finished in 2.01 seconds 
5 examples, 1 failure 

Failed examples: 

rspec ./spec/models/user_spec.rb:56 # User should have 1 role through user_group 

はRSpecのテストの合計新人なので、とところで背と背が高くなって続けて全体のRailsスタックと本当に快適ではない、私は完全に私のEという逃しましたコマンドラインでNV [「OX_ID」]は、(原因の、なぜ/どのようにすべき/それだろうか?)テスト環境に生存しなかった

は離れて、この

から取るために、私は最終的に

を追加しました私のテストに
y user.roles.to_sql 

(私はコンパイルするSQLレールの種類を参照させる) - と私は、私は自分の目を信じていなかった出力を見ました!

SELECT `roles`.* FROM `roles` INNER JOIN `roleables` ON `roles`.`id` = `roleables`.`role_id` 
    INNER JOIN `user_groups` ON `roleables`.`roleable_id` = `user_groups`.`id` AND `roleables`.`roleable_type` 
    = 'UserGroup' INNER JOIN `user_groups_users` ON `user_groups`.`id` = `user_groups_users`.`user_group_id` 
    WHERE `user_groups_users`.`user_id` = 3 AND (roles.ox_id=NULL) AND (roleables.ox_id=NULL) 
    AND (user_groups.ox_id=NULL) 

(roles.ox_id=NULL)はすべてそれを与えました!私はそれがroles.ox_id=1と言うことを期待していました、そして、それはここでした!

答えて

0

rspec/shouldaコードは、ライブラリがロードされていない開発環境のコンソールで実行しています。私はあなたがそれをやって行くだろうか正確にわからないんだけど、あなたはコンソールで簡単なテストをやってみたかった場合、あなただけプリントアウトすることができます。

user.user_groups[0].roles.count == 1 

をシンプルに保つこと、この場合には良いかもしれません。希望が役立ちます。

+0

いいえ! (いいえ)、私はdev envで動作していません。 (いいえ)それは助けなかった<: –

関連する問題