warn
определяется в Kernel
, который включен в каждый объект. Если вы не выдавали предупреждение во время инициализации, вы можете указать следующее предупреждение:
obj = SomeClass.new
obj.should_receive(:warn).with("Some Message")
obj.method_that_warns
Задать предупреждение, выданное в методе initialize
, довольно сложно. Если это необходимо сделать, вы можете поменять поддельный IO
объект на $stderr
и проверить его. Просто обязательно восстановите его по примеру
class MyClass
def initialize
warn "Something is wrong"
end
end
describe MyClass do
before do
@orig_stderr = $stderr
$stderr = StringIO.new
end
it "warns on initialization" do
MyClass.new
$stderr.rewind
$stderr.string.chomp.should eq("Something is wrong")
end
after do
$stderr = @orig_stderr
end
end