我正在尝试为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的一部分我想提供可以的测试助手:
例如,我的测试可能如下:
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
最好是任何测试框架将其识别为失败而不是错误的错误。
是否存在此类错误?