Tôi đang sử dụng rspec cho thử nghiệm của mình trong một dự án ruby và tôi muốn xác định rằng chương trình của tôi không được xuất ra bất cứ điều gì khi tùy chọn -q được sử dụng. Tôi đã thử:kiểm tra (không có) `puts` trong RSpec
Kernel.should_not_receive :puts
Điều đó không dẫn đến kiểm tra không thành công khi có đầu ra cho bảng điều khiển.
Làm cách nào để xác minh sự vắng mặt của đầu ra văn bản?
Đối với tôi, mong đợi thực tế: viết tác phẩm, nhưng mong đợi: puts không. Mã của bạn có gọi $ stdout.puts hoặc chỉ cần đặt? –
Chỉ cần đặt, tôi sẽ KHÔNG BAO GIỜ viết đến $ stdout vì nó không phải là rất năng động. Thay vào đó tôi sẽ gán lại $ stdout, giống như một stringio, do đó, "đặt" đi đến những gì tôi muốn. Hãy nhớ rằng bạn không mong đợi: viết bạn KHÔNG mong đợi viết. Cùng một điều với đặt. Tôi sẽ kiểm tra để xem những gì bạn đang nhận được bằng cách làm một bài kiểm tra tích cực cũng như một bài kiểm tra tiêu cực. Ví dụ, nếu tôi nói "Tôi không nên có một chiếc mũ cho món quà thế tục cho ngày." Điều đó không có nghĩa là tôi đã không nhận được một chiếc khăn. –