0
很好 - 回答我自己的問題(回想起來) - '看你的六個';這意味着過去的設置,定義和微小的「補丁」可能會潛入你的身邊!爲什麼測試在提示時失敗並通過導軌控制檯?
在我的情況下,一個環境變量,幫助我默認範圍所有我的模型,是罪魁禍首!
這本gist文件我試圖證明完全相同的測試通過在軌控制檯,當startet與
OX_ID=1 RAILS_ENV=test r c
與耙規範軋機的運行時,提供這種輸出失敗:
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堆棧這BTW不斷變得越來越高舒適,我完全錯過了我的電子NV [的「OX_ID」]在命令行中,沒有生存到測試環境(的原因,爲什麼/如何應該/可能呢?)
要採取從這個
我終於加入
遠y user.roles.to_sql
對我的測試(讓我看看什麼樣的SQL Rails編譯) - 當我看到輸出我不相信我自己的眼睛!
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
,這是它!
不! (不),我沒有在開發環境中運行。 (沒有)它沒有幫助<:) – 2012-02-06 07:41:15