2009-06-30 34 views
88

Tôi gặp vấn đề khi kiểm tra bộ điều khiển của mình bằng RSpec - cuộc gọi response.body luôn trả về một chuỗi rỗng. Trong trình duyệt, mọi thứ đều hiển thị chính xác và kiểm tra tính năng dưa chuột có vẻ đúng, nhưng RSpec không thành công mỗi lần.Kiểm tra bộ điều khiển RSpec - trả lời trống.bạn

Các kỳ vọng khác về đối tượng phản hồi, chẳng hạn như response.should render_template('index') truyền mà không gặp bất kỳ sự cố nào.

Có ai trong số các bạn gặp sự cố này trước đây không? Có lẽ html phản ứng có thể thu được theo một cách khác?

Đối với các phiên bản, Rails 2.1.0, RSpec 1.2.7.

Trả lời

166

Theo mặc định, đường rspec-ray xâm nhập vào Rails để ngăn chặn nó thực sự hiển thị mẫu xem. Bạn chỉ nên kiểm tra hành vi của các hành động của mình & lọc các kiểm tra bộ điều khiển của bạn, chứ không phải kết quả của việc hiển thị mẫu - đó là thông số kỹ thuật của chế độ xem.

Tuy nhiên, nếu bạn muốn thực hiện kỹ thuật điều khiển của bạn làm mẫu như ứng dụng bình thường, sử dụng render_views chỉ:

describe YourController do 
    render_views 
    ... 
end 
+2

Cảm ơn bạn, chính xác những gì tôi cần. –

+1

Tôi đã làm việc với Rails trong nhiều năm và bây giờ tôi cuối cùng đã hiểu được sự khác biệt giữa bộ điều khiển và thông số kỹ thuật yêu cầu. Cảm ơn! –

2

Như tôi đã làm việc với một vấn đề tương tự (đó dẫn tôi đến câu hỏi này), nó đã xảy ra với tôi rằng có nhiều cách khác nhau để da cùng một con mèo. Nói cách khác, thay vì kiểm tra nội dung văn bản, bạn có thể kiểm tra nội dung của flash.

response.body.should =~ /Invalid email or password/ 

có thể là một kiểm tra tương đương với:

flash[:alert].should == "Invalid email or password" 

Đối với tôi sau này dường như linh hoạt hơn một chút vì nó sẽ chạy một trong hai cách, nhưng nó có thể không thích hợp trong mọi trường hợp.

Chúc mừng,

John

0

Theo mặc định, cấu hình RSpec-ray vô hiệu hóa vẽ mẫu cho thông số kỹ thuật điều khiển

Một trong những cách để sửa lỗi này là bằng cách đảm bảo để cho phép các thiết lập trong file render_viewsrails_helper.rb của bạn. Bằng cách này, bạn có thể làm việc trên toàn cầu trong tất cả các bài kiểm tra của mình.

RSpec.configure do |config| 
    config.render_views 
end 

Hoặc sử dụng khai render_views một nhóm cá nhân:

describe User do 
    render_views 
end 

Bạn có thể đọc thêm về here này.

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