在RSpec中挂起的测试有什么用?
前任:
xit "it is named Ash" do
或
it "it is named Ash"
谢谢!
这个想法是暂时禁用一个示例。挂起的示例不会执行,并标记为挂起。
一个用例是,如果您想运行除一两个示例之外的整个规范。您可以将它们标记为待处理,而不是注释掉它们。另一个原因是为你知道必须实现但目前没有实现的东西编写规范。
在执行报告中,您将看到
x 个示例,y 个故障,z 挂起
要将示例标记为待处理,您可以将x
放在it
前面,正如您发现的那样,或者放在您想要挂起的位置:
pending 'some reason'
如果执行后者,则将执行该示例中的代码,但该示例将计为挂起,而不是成功或失败。
没有正文(do
-end
块(的示例也被视为待处理。
作为测试输入,pending()
是指运行但预期会失败的测试。事实上,突然通过的pending()
测试将无法通过测试运行。理想的用例是,如果针对突然停止工作一两天的外部 API 运行测试,则可以标记为挂起以取消阻止 CI,但仍会在可以重新启用它们时通知您。
这与导致测试完全跳过而不运行skip()
相反。例如,如果您有一个通过的特定测试,但是 运行需要很长时间,您可能希望在处理该代码区域时仅在本地运行,但标记为skip()
以便从 CI 中省略它。
令人困惑的是,"跳过"和"挂起"测试都打印了pending
输出:
# test marked as skipped
1 example, 0 failures, 1 pending
一般来说,挂起作为仍在运行的测试的概念在其他语言测试生态系统中相对不常见。在这一点和测试结果的"待定"一词的过载之间,难怪人们会感到困惑并认为pending()
和skipped()
是相同的!