Làm cách nào để kiểm tra hành động của trình điều khiển gửi tệp?Kiểm tra send_file RSpec
Nếu tôi làm điều đó với thử nghiệm controller.should_receive(:send_file)
không thành công với "Thiếu mẫu" vì không có gì được hiển thị.
Làm cách nào để kiểm tra hành động của trình điều khiển gửi tệp?Kiểm tra send_file RSpec
Nếu tôi làm điều đó với thử nghiệm controller.should_receive(:send_file)
không thành công với "Thiếu mẫu" vì không có gì được hiển thị.
Một cách khác mà làm việc là:
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
Đối với tôi, điều này nắm bắt được thực tế là các tác dụng phụ đích của send_file
là sắp xếp không có gì khác được hiển thị. (Mặc dù, nó phải thừa nhận là có vẻ hơi rung rinh để có cuống gọi một phương thức trên đối tượng ban đầu.)
Rails 4, RSpec 3:' 'and_return {value}' không được chấp nhận. Sử dụng 'and_return (value)' hoặc một khối triển khai mà không cần 'and_return' thay thế. –
Bạn cũng có thể làm điều này:
result = get ....
result.body.should eq IO.binread(path_to_file)
Nice, tại sao tôi không nghĩ về điều đó :) – Mirko
Đối với bất kỳ ai xem điều này bằng cách sử dụng các phiên bản RSpec mới hơn, 'stub!' Đã không được chấp nhận. Chỉ cần sử dụng 'stub' –
Và trong Rspec 3, nó là' allow (controller) .to nhận (: render) ' – mehulkar