ruby Rspec中的挂起测试是什么?

llycmphe  于 2023-03-08  发布在  Ruby
关注(0)|答案(2)|浏览(118)

RSpec中挂起的测试有什么用?
例如:

xit "it is named Ash" do

it "it is named Ash"

谢谢大家!

yeotifhr

yeotifhr1#

其思想是暂时禁用一个示例。挂起的示例不执行,并标记为挂起。
一个这样的用例是如果你想运行一个完整的规范,除了一两个例子。你可以把它们标记为挂起,而不是注解掉。另一个原因是为一些你知道必须实现,但目前还没有实现的东西编写规范。
在执行报告中,您将看到
x个示例,y个失败,z个待定
要将一个示例标记为挂起,可以在it前面放置一个x,正如您已经发现的那样,或者在您希望挂起的位置放置:

pending 'some reason'

如果执行后者,则将执行该示例中的代码,但该示例将被视为挂起,而不是成功或失败。
没有主体的示例(do-end块)也被视为待定。

wqlqzqxt

wqlqzqxt2#

作为测试输入,pending()是指已运行但预计会失败的测试。实际上,突然通过的pending()测试将使测试运行失败。理想的使用情形是,如果您针对突然停止工作一两天的外部API运行测试,则可以将其标记为挂起以解除阻止CI,但仍会在您可以重新启用它们时通知您。
这与skip()相反,skip()会导致测试被完全跳过而不运行。例如,如果您有一个特定的测试通过,但需要很长时间来运行,您可能希望在处理该代码区域时只在本地运行,但标记为skip(),以便从CI中忽略它。
令人困惑的是,“跳过”和“待定”测试均打印为pending输出:

# test marked as skipped

1 example, 0 failures, 1 pending

一般来说,在其他语言测试生态系统中,将pending定义为仍在运行的测试的概念相对来说并不常见,加上测试结果中“pending”一词的过多使用,难怪人们会感到困惑,认为pending()skipped()是一样的!

相关问题