2009-12-11 31 views
7

Vì vậy, tôi đang cố gắng tìm ra cách để đưa một phương thức điều khiển vào rspec cho một ứng dụng Sinatra. Lý do chính cho việc này là để kiểm tra luồng logic của ứng dụng và để đảm bảo nó gọi các hàm cần thiết khi các điều kiện nhất định được đáp ứng. Vì vậy, về bản chất, tôi muốn có thể làm một cái gì đó nhưĐặt một phương thức điều khiển với Sinatra và rspec

controller.should_receive(:fancy_method).and_return("This is a string") 

Điều tôi đang gặp khó khăn là truy cập vào cá thể bộ điều khiển trong ứng dụng sinatra. Tôi có thể ghi đè lên các hàm hiện tại bằng cách sử dụng class_eval trên lớp bộ điều khiển sinatra, nhưng tôi muốn khẳng định rằng các hàm này thực sự chạy.

Có ai có lời khuyên nào không?

Cảm ơn.

Trả lời

3

Dan, tôi tin những gì bạn thực sự muốn chỉ là kiểm tra các hành động của bộ điều khiển. Từ quan điểm của người kiểm thử, bạn không nên quan tâm đến những gì nó thực sự gọi, mà là đầu ra cụ thể và có thể là có thể là một số điều kiện đặc biệt khác (đó là chế nhạo hoặc xáo trộn các lớp khác) (1).

Bạn có thể kiểm tra official documentation for Sinatra + Rack::Test hoặc this blog post from devver.net.

(1): Nếu trang điều khiển của bạn đang gọi một số lớp khác (mô hình, dịch vụ, v.v.), bạn có thể giả lập chúng và đặt kỳ vọng vào chúng. Ví dụ:

SomeClass.should_receive(:msg).with(:arg).and_return(:special_value) 

Một số thông tin nhiều hơn cho chế giễu (với RSpec trong exmaple này) có thể được tìm thấy trên RSpec documentation pages.

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