Принятый ответ выше неверен. Он «работает», потому что не получает сообщение: write, но, возможно, получил сообщение: put.
Правильная строка должна выглядеть следующим образом:
$stdout.should_not_receive(:puts)
Также вам необходимо убедиться, что вы поставили строку перед кодом, который будет записываться в STDIO. Например:
it "should print a copyright message" do
$stdout.should_receive(:puts).with(/copyright/i)
app = ApplicationController.new(%w[project_name])
end
it "should not print an error message" do
$stdout.should_not_receive(:puts).with(/error/i)
app = ApplicationController.new(%w[project_name])
end
Это реальный рабочий RSpec из проекта