在RSPec中我有这个:
expect{obj.my_method}.to raise_error(Module::Error::MyErrorClass)
我的测试失败了以下:
expected Module::Error::MyErrorClass, got #<RuntimeError: My error message.
我想要像
这样的东西expect{obj.my_method}.to raise_error(Module::Error::MyErrorClass.message)
但在那种情况下测试失败,没有任何特定的消息。我怎么能通过?
我的错误类如下:
module Module
module Error
class MyErrorClass < StandardError
def self.message
raise "My error message."
end
end
end
end
答案 0 :(得分:2)
您的错误类message
方法应该只是define a string - 即。
module Module
module Error
class MyErrorClass < StandardError
def message
"My error message."
end
end
end
end
现在,假设实际上已经引发了这个异常,那么以下任何一个都应该有效:
expect{obj.my_method}.to raise_error(Module::Error::MyErrorClass)
expect{obj.my_method}.to raise_error(Module::Error::MyErrorClass.new.message)
expect{obj.my_method}.to raise_error("My error message.")
expect{obj.my_method}.to raise_error(Module::Error::MyErrorClass, "My error message.")
(Link到此匹配器的RSpec文档。)