Theo như tôi có thể nói, bạn không thể. Giá trị phiên trong các phép thử tích hợp (trong đường dẫn 3.2.2) là một bản sao. (Rails gods: Vui lòng sửa tôi nếu tôi là sai.) Bạn có thể đặt giá trị, nhưng nó sẽ không ảnh hưởng đến lần nhận/đăng tiếp theo vì đó là bản sao cục bộ của phiên thực. Tuyệt vời cho các bài kiểm tra khẳng định, không tuyệt vời như vậy để giữ trạng thái trong phiên trong khi kiểm tra tích hợp.
Tôi có bộ điều khiển thử nghiệm để hỗ trợ kiểm tra JavaScript của mình qua Evergreen.
Giải pháp của tôi là thêm phương thức vào bộ điều khiển thử nghiệm và tuyến đường có sẵn khi tôi KHÔNG được sản xuất, cho phép tôi đặt giá trị phiên. Về cơ bản, phương thức app_test # set_session của chúng tôi sàng lọc các tên tham số cho tiền tố, nếu tìm thấy tiền tố, thì giá trị của phiên cho tên thông số tiền tố được đặt. Một cái gì đó như:
params.each() do |key, value|
next if (key !~ /^set_session_/)
session[ key.slice(("set_session_".size())..-1).to_sym ] = value
end
# don't forget to render something/anything
Vì vậy, để thiết lập các biến session trong những thử nghiệm hội nhập của tôi, tôi có một nhỏ đoạn mã như:
prefix = "set_session_"
post("/set_session.html", { (prefix + "user_id") => "My Name Is Mudd" })
Không xinh đẹp như "phiên [: user_id] = ' Tên tôi là Mudd '', nhưng nó hoạt động. Bài đăng tiếp theo của tôi/get sẽ thấy phiên [: user_id] được đặt với giá trị mong muốn.
Điều này dễ dàng mở rộng để truyền số nguyên, ký hiệu, v.v. và tất nhiên, nhiều cặp khóa/giá trị phiên có thể được đặt cùng một lúc. Không đẹp, nhưng không tệ.
Chống lại twitter hoặc facebook. – jbasko
Điều này có hữu ích không? http://stackoverflow.com/questions/5331045/testing-a-web-applications-facebook-integration-with-cucumber –