2010-04-08 3 views
7

좋아, 그래서 전에 이상한 문제가 직접 전에 블록과 연결되어있어. Watir과 RSpec을 통한 통합 테스트를하고 있습니다. 간단한 테스트를 위해 사용자가 로그인을 수행 할 수 있는지 확인하려면 factory_girl을 사용하여 db에 '사용자'레코드를 만듭니다. 나는 브라우저를 호출하고 사용자가 로그인을 시도하는 방법을 참조 do stuff에서RSpec : 이전 (: 전체)과 이전 (: 각) 간의 심도 차이

before(:each) do 
    @user = Factory(:user) 
end 

if "should perform a login" do 
    # do stuff 
end 

:

그래서 나는 다음과 같은 코드를 삽입. 불행히도, 어떻게 든 그는 그것을 할 수 없습니다 - "사용자 이름이 유효하지 않습니다".

내가 조사한 결과, before(:all) 블록에 사용자를 생성하는 코드를 넣으면, 은 모두 마법으로 작동합니다.. 어떻게한다는거야? 이 문맥에서 :all:each의 차이점은 무엇입니까? 또한 테스트 본문에 실제로 사용자를 생성하기위한 코드를 넣으면 여전히 작동하지 않습니다 (예 : 사용자가 어떻게 든 DB 등에 추가되지 않음).

답변

3

당신은 아마 트랜잭션 비품을 사용할 수있다, 따라서 각 RSpec에 예제에 싸여 트랜잭션 내부 데이터베이스의 변경 사항을 확인하지 않는 Watir과 과정.

트랜잭션 기능을 비활성화 시도하고 깨끗한 상태를 얻을 수 database cleaner 같은 것을 사용 각 예제 앞에.

관련 문제