2012-02-06 3 views
0

잘 - 내 자신의 질문에 (회상) 대답 - '당신의 여섯'; 과거의 설정, 정의 및 작은 패치가 당신을 몰래 빠져 나올 수 있다는 것을 의미합니다!테스트가 프롬프트에서 실패하고 레일 콘솔을 통과하는 이유는 무엇입니까?

제 경우에는 기본 범위 내 모델을 돕는 환경 변수가 범인이었습니다!

이에게 나 동일한 테스트 레일 콘솔에 전달하는 증명하려고이 gist 문서를 할 때이 출력을 제공, 레이크 사양와 공장의 실행하면 실패

OX_ID=1 RAILS_ENV=test r c 

와 startet :

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에 시험에 총 신인이기 때문에, 그리고 BTW 키와 키가 점점 계속 전체 레일 스택 정말 편안하지, 난 완전히 내 E 놓친 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 그리고 여기에서는 그것이 있었다!

답변

0

콘솔에서 라이브러리가로드되지 않은 개발 환경에서 rspec/shoulda 코드를 실행하고 있습니다. 나는 당신이 그 일에 대해 갈 얼마나 정확히 모르겠지만, 콘솔에서 빠른 테스트를하고 싶어, 당신은 그냥 인쇄 할 수 있습니다

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

을 간단이 경우에는 더 좋을 수 있습니다 유지. 희망이 도움이됩니다.

+0

아니요! (아니오), dev env에서 실행되지 않습니다. (아니오) 도움이되지 않았다 <: –

관련 문제