2009-07-16 26 views
20

Tôi đang viết một bài kiểm tra rspec cho bộ điều khiển của mình và tôi không thể tìm thấy giải pháp sau đây. Đối với một trong các thử nghiệm trường hợp cạnh, tôi cần xác minh giá trị của một biến mẫu. Làm cách nào để truy cập nó mà không phải xác định người truy cập? Theo mặc định, thông thường:RoR và RSpec: Làm cách nào để truy cập các biến đối tượng của trình điều khiển mà không cần xác định người truy cập?

controller.variable.should == '3.15' 

không hoạt động.

Xác định

attr_reader: biến

chỉ để làm các xét nghiệm vượt qua sẽ là ngớ ngẩn và Tôi chắc chắn rằng có một cách inteligent hơn.

Trả lời

43
controller.instance_variable_get(:var) 

nếu bạn thấy mình làm điều này, bạn có thể muốn suy nghĩ lại cách tiếp cận thông tin để kiểm tra hành vi thiết yếu hơn là chi tiết triển khai ngẫu nhiên. Các bài kiểm tra của bạn phải đảm bảo rằng "điều" có chức năng như nó cần mà không bị ràng buộc quá chặt chẽ với việc thực hiện cụ thể.

EDIT: Không phải là assigns(:var) ma thuật kiểm tra đường ray để làm điều tương tự với bộ điều khiển?

+0

Có thể bạn đã đúng - tôi nên kiểm tra kết quả của hành động thay vì chi tiết triển khai. Dù sao cũng cảm ơn bạn. –

+6

là công bằng, đối với bộ điều khiển, biến thể hiện là những thứ cần được kiểm tra. Tôi trả lời câu hỏi này trước cà phê. –

+1

gán (: var) là chính xác – codecraig

Các vấn đề liên quan