在Ruby中是否存在Java的AssertionError?

时间:2017-03-24 14:13:05

标签: ruby testing

我正在尝试为gem编写一些测试助手,并希望提供一些在适当时触发测试失败的断言。

在Java中,这是可以实现的(如果我记得的话)通过抛出一个AssertionError,然后应该由测试运行器和Just Work接收。 Ruby存在这样的事情吗?

例如,假设我有一个gem emily-post,它提供了一些有用的方法来检查请求的礼貌程度:

request = 'I can haz cheezburger?'
EmilyPost.is_polite?(request) # false

request = 'I can haz cheezburger, please?'
EmilyPost.is_polite?(request) # true

让我们说作为这个gem的一部分我想提供可以的测试助手:

  • 设置(im)礼貌请求
  • 确认回复也是礼貌的

例如,我的测试可能如下:

include EmilyPost::TestHelpers

with_polite_request do
    response = 'No way!'
    issue(response) # This rude response should fail the test
end

with_polite_request的代码可能类似于:

def with_polite_request
    request = 'I can haz cheezburger, please?'
    yield
    raise AssertionError unless is_polite?(response)
end

...其中AssertionError最好是任何测试框架将其识别为失败而不是错误的错误。

是否存在此类错误?

0 个答案:

没有答案