我有一个用于大型项目(约3800个单独示例)的测试套件,我将其从RSpec 2.14更新为3.6。

我刚刚为s/be_true/be true/运行了replace-all,但是其中一些应该改为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过滤器中进行around,但是此skip将所有其他pending标记为run_all_when_everything_filtered,而不是完全忽略它们。并且它与example.location的其他过滤器不兼容。 (可能是因为example.metadata指的是测试的第一行,但是更改仅次于该行的几行。)

而且,我似乎也无法使用它在rerun中添加标签,然后将其过滤掉。

编辑:我也不想在命令行上指定它们,因为我的测试是在ojit_code下运行的,而ojit_code仍在运行相同的命令。

还有其他想法吗?

最佳答案

您可以使用以下命令运行更改的规范:

rspec $(git ls-files --modified spec)

如果您还想包括新的未版本规范,请使用:
rspec $(git ls-files --modified --others spec)

您可以使用shell别名使它更方便:
alias rch='rspec $(git ls-files --modified --others spec)'

关于git - 我可以让RSpec只运行更改的规范吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45496443/

10-13 09:01
查看更多