많은 단계가있는 '가입'애플리케이션에 대한 일부 오이 이야기를하고 있습니다.Cucumber Stories가있는 세션 변수
오히려 은 일 것입니다 모든 단계를 즉시 커버 Huuuuuuuuge 이야기를 쓰고, 나는 오히려 일반 사용자처럼 컨트롤러의 각 작업을 통해 일하고 싶습니다. 내 문제는 여기에 세션 변수로 첫 번째 단계에서 생성 된 계정 ID를 저장하고 있으므로 2 단계, 3 단계 등을 방문하면 기존 등록 데이터가로드됩니다.
RSpec 사양에서 controller.session[..]
에 액세스 할 수 있다는 것을 알고 있지만 Cucumber 스토리에서 다음과 같은 오류가 발생하면이 오류가 발생합니다. (또한 어딘가에 읽었을 때 안티 패턴 등입니다. ..) : : 어떤] 또는 세션 [: 어떤]
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.session (NoMethodError)
을 세션 (사용 : controller.session의 사용
이든)
그래서 세션 저장소의 가입이 실제로 가능하지 않은 것처럼 보입니다. 내가 궁금하면 (.. 내가 가장 잘 될 것이라고 생각)이 가능한있을 경우입니다 :
- 모의 아웃 세션 저장소 등
- 컨트롤러 내에서 방법을 가지고 있고 (그 밖으로 스텁 나는 RSpec에 책을 보았다 (물론, 무 지방) 등 WebRat을 통해보고했지만, 난 정말 내 문제에 대한 답변을 못 찾았습니다
인스턴스 변수를 할당 예를 들어 get_registration
...) ...
좀 더 명확히하기 위해 가입 프로세스는 상태 머신처럼 - 예 : 사용자가 등록이 완료되기 전에 네 단계를 거쳐 진행되므로 '로그인'은 실제로 옵션이 아닙니다 (사이트 작동 방식의 모델이 깨집니다).
컨트롤러 사양 세션 var에 따라 모델을로드하는 메소드에 대한 호출을 스텁 (stub)합니다. 그러나 '안티 패턴'라인이 mock뿐 아니라 스텁에도 적용되는지 확실하지 않습니다.
감사합니다.
덕분에 ... 좀 더 세부 내 질문에 업데이 트했습니다,하지만이 기능을 추가 포함하는 것처럼 정말 위해 특별히 당신이 제안을 도움이되지 않습니다 나에게 '안티 패턴 (anti-pattern)'처럼 보이지만, 컨트롤러 메소드를 스텁 (stub)하면이 규칙을 어기는 테스트가 필요하다. –
추가 기능? 사용자가 귀하의 사이트에 어떻게 로그인합니까? 등록 프로세스는 언급했지만 로그인은 언급하지 않았습니다. 위에 표시된 것처럼 이미 등록 된 사용자의 공장을 만들고 로그인 할 수없는 이유는 무엇입니까? 오이 이야기는 사용자가 귀하의 사이트와 상호 작용하는 방식을 정확하게 표현해야합니다. 사용자는 컨트롤러 메소드를 스텁 아웃 할 수 없습니다. 작성 양식과 클릭 연결 링크가 있습니다. 사용자 행동을 모방하지 않으면 수용 테스트가 아닙니다. – danpickett
여기 양쪽에 있습니다.필자는 인증 테스트가 원하는 방식으로 작동하는 기능에 대해 위와 거의 똑같은 기능을 제공합니다. 다른 기능의 경우, 모든 카피 바라 단계를 반복해야 모든 시나리오에 로그인 할 수 있습니다. 오이는 테스트 목적으로 데이터베이스 상태를 조작 할 수 있습니다. 왜 세션이 아닌가? –