我有一个非常大的项目(约 3800 个单独示例)的测试套件,我正在将其从 RSpec 2.14 更新到 3.6。
我刚刚运行了全部替换s/be_true/be true/
,但其中一些应该be_truthy
相反,这些规格是失败的。
我可以从中提取更改的行git diff
- 需要做一些工作 - 但随后我需要将这些输入到 RSpec 中config.filter_run
,而且它似乎不喜欢我这样做locations
过滤器(当您指定一个过滤器时激活的过滤器)rspec path/to/file:line
在命令行上);它说 ”All examples were filtered out; ignoring {:locations=>...}
".
我还可以example.run unless example.location.in? changed_specs
in an around
过滤器,但是这个skip
s 所有其他并将它们标记为pending
,而不是完全忽略它们;并且它不能与其他过滤器协同工作run_all_when_everything_filtered
。 (可能是因为example.location
指测试的顶行,但更改是在其下面几行。)
我似乎无法使用它来添加标签example.metadata
然后将其过滤掉。
编辑:我也不想在命令行上指定它们,因为我的测试在rerun
,它继续运行相同的命令。
还有更多想法吗?
您可以通过以下方式运行更改后的规格:
rspec $(git ls-files --modified spec)
如果您想包含新的未版本化规范,请使用:
rspec $(git ls-files --modified --others spec)
您可以使用 shell 别名来使此操作更方便:
alias rch='rspec $(git ls-files --modified --others spec)'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)