2013-09-23 47 views
10

Tôi muốn truy cập các biến trong sự khác biệt Cho/Sau đó/Khi mệnh đề. Làm thế nào để bảo tồn các biến để họ có thể truy cập ở khắp mọi nơi?Bảo tồn biến trong dưa chuột?

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

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

Trả lời

15

Để chia sẻ các biến trên định nghĩa bước, bạn cần phải sử dụng biến mẫu hoặc biến toàn cầu.

Biến thể hiện có thể được sử dụng khi bạn cần chia sẻ dữ liệu qua các định nghĩa bước nhưng chỉ cho một thử nghiệm (tức là các biến được xóa sau mỗi trường hợp). Các biến cá thể bắt đầu bằng @.

Given(#something) do 
    @foo = 123 
end 

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

Nếu bạn muốn chia sẻ biến trên tất cả các trường hợp, bạn có thể sử dụng biến toàn cục bắt đầu bằng $.

Given(#something) do 
    $foo = 123 
end 

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

Lưu ý: Thường không nên chia sẻ các biến giữa các bước/kịch bản khi tạo khớp nối.

+0

Tôi khuyên bạn nên đặt mặc định '@foo || =: bar' để có thể sử dụng bước này mà không cần bước khác. – Johannes