2013-09-23 2 views
10

Given/Then/When 절에서 변수에 액세스하려고합니다. 어디에서나 액세스 할 수 있도록 변수를 보존하는 방법은 무엇입니까?오이에 변수를 보존 하시겠습니까?

Given(#something) do 
    foo = 123 # I want to preserve foo 
end 

Then(#something) do 
    # how to access foo at this point??? 
end 

답변

15

단계 정의간에 변수를 공유하려면 인스턴스 또는 전역 변수를 사용해야합니다.

인스턴스 변수는 단계 정의에서 데이터를 공유해야하지만 하나의 테스트에서만 사용할 수 있습니다. 즉, 각 시나리오마다 변수가 지워집니다. 인스턴스 변수는 @로 시작합니다.

Given(#something) do 
    @foo = 123 
end 

Then(#something) do 
    p @foo 
    #=> 123 
end 

모든 시나리오에서 변수를 공유하려는 경우 $로 시작하는 전역 변수를 사용할 수 있습니다.

Given(#something) do 
    $foo = 123 
end 

Then(#something) do 
    p $foo 
    #=> 123 
end 

참고 : 일반적으로 결합을 만들 때 단계/시나리오간에 변수를 공유하지 않는 것이 좋습니다.

+0

기본값 인 @foo || = : bar'를 사용하면 단계가 다른 단계없이 사용될 수 있도록하는 것이 좋습니다. – Johannes

관련 문제