У меня есть класс с именем RemoteError
с методом self.fatal
.Эта методика заключается в том, чтобы перехватить исключение, отправить сведения об исключении на сервер и затем распространить исключение, чтобы убить программу.
class RemoteError
def initialize(label, error)
@label = label
@error = error
end
def self.fatal(label, error)
object = new(label, error)
object.send
raise error
end
def send
# send the error to the server
end
end
Я пытаюсь написать тесты для RemoteError.fatal
метод.Это сложно из-за вызова raise
в методе.Каждый раз, когда я запускаю свои тесты, raise
явно вызывает исключение, и я не могу проверить, был ли вызван send
.
describe "fatal" do
it "should send a remote error" do
error = stub
RemoteError.stub(:new) { error }
error.should_receive(:send)
RemoteError.fatal(stub, stub)
end
end
Есть ли способ, которым я могу заглушить или как-то обойти raise
для этого конкретного теста?