井戸 - 私自身の質問に(回顧して)答える - 'あなたの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
と言うことを期待していました、そして、それはここでした!
いいえ! (いいえ)、私はdev envで動作していません。 (いいえ)それは助けなかった<: –