2011-08-20 3 views
1

나는 오이와 아주 좋은 결과를 가진 공장 소녀를 사용하고 있습니다. 그러나 구문이 약간 강제되는 것을 발견했습니다. 내 모델에 대한 유효한 공장이있는 가정오이 단계에서 factorygirl 만든 개체 가져 오기

, 나는 내가 단계는 페이지로 이동하지만 단계가 #을 {알고있는의 부분을 알고있는 일반적인 오이 도우미/단계

Given a model exists 
When I visit the model's edit page 

싶습니다 model}은 edit_model_path (@model)에 들어갈 인스턴스를 참조하고 있습니다.

항상 도움을 주셔서 감사합니다.

답변

0

클래스를 나타내는 문자열을 전달하면 클래스 Thing의 경우 문자열 'thing'을 사용합니다. 일단 당신이 한 걸음 나아 갔다면 좋을 것 같아요. ...

아마도 편집 페이지의 URL을 구성하기 위해 클래스 이름을 사용할 수 있습니다. 나는 이것이 당신이 아니, 충분히 단계를 일반화 할 것이라고 생각

my_model = "thing".classify.constantize 
my_instance = my_model.find(...) 

: 당신은 실제로이 코드를 사용하여 이름에서 일정한 수업을받을 수 있나요?

+0

공장 소녀는 OP에서 사용한 구문을 사용하면 주어진 단계가 필요하지 않습니다. 나는 그들이 모든 모델을위한 새로운 단계를 정의 할 필요없이 편집 경로를 방문 할 방법을 찾고 있다고 생각한다. –

+0

아, 완전히 오해했습니다. 그 물건을 지우고 다시 시도하자 :) – jaydel

+0

정말 고마워, 거의 다 왔어.하지만 경로를 동적으로 빌드하는 데 문제가있어서 너무 빨리 말했어. 그래서 model_edit_path (my_instance)' – Tonys

0

당신이 찾고있는 것은 pickle입니다. 정확한 기능을 제공합니다. 당신이 당신의 Gemfile에 보석을 추가 한 후, 당신은 당신이 (발전기의 --paths 옵션을 기억)을 할 수있는 경로에 대한 질문

Scenario: Show product 
    Given a product exists with name: "Milk", price: "2.99" 
    When I go to the show page for that product 
    Then I should see "Milk" within "h1" 
    And I should see "$2.99" 
를 들어

# assuming you have an User class and a Factory for that model 
Given a user exists 
And another user exists with role: "admin" 

# later 
Then a user should exist with name: "Fred" 
And that user should be activated # this uses rspec predicate matchers 

같은 단계를 쓸 수 rails g pickle --paths --email 명령을 실행

readme filerailscast의 예제가 더 있습니다.

+0

감사합니다. 명확히하기 위해 (그리고 순수하게 미학적일지도 모르겠지만) 공장 - 소녀 모델 생성 과정/구문을 사용하는 것을 선호합니다. - 일을하기 위해 그것을 하나의 보석으로 유지하는 것만으로도 나의 정신적 안녕에 더 가깝게 보인다. 어쩌면 나는 너무 많은 것을 찾고 있습니다. – Tonys

관련 문제