我想将examples.txt文件复制到另一个examples_1.txt文件中,这样在重新运行时,我可以在examples.txt文件被破坏时获得另一个副本。
问题:我的代码是这样的。我在after(:suite)部分中复制了example.txt文件,但出现了错误。
我得到这个错误。当我检查时,这是因为examples.txt文件甚至不存在。关于examples.txt文件何时创建的任何想法,以便我可以在创建文件后复制它们。
No such file or directory @ rb_sysopen - reports/examples.txt
# ./spec/spec_helper.rb:94:in `block in <top (required)>'
# ./spec/spec_helper.rb:89:in `<top (required)>'
1条答案
按热度按时间lp0sw83n1#
事情就是这样发生的:https://github.com/rspec/rspec-core/blob/e7c5d030966a7e8dad3e0a67c61920c4f2437c15/lib/rspec/core/runner.rb#l90
如果你探索
run_specs
在同一个文件中(https://github.com/rspec/rspec-core/blob/e7c5d030966a7e8dad3e0a67c61920c4f2437c15/lib/rspec/core/runner.rb#l113)您将看到在这个方法返回和examples.txt被持久化之前,钩子已经完成了。没有人预料到你的情况,所以没有“保存文件后”钩子可供你使用。一些可能的选择是:
猴斑
def persist_example_status
方法并进行额外的复制(hacky,伴随着monkeypatching的所有问题),或者跑
rspec ... && cp reports/examples.txt reports.examples_1.txt
(简单得多,不那么老套,很少做假设)。打开一个pr到rspec核心,引入一个您需要的钩子(我认为它不太可能被接受,因为存在更简单的解决方案)
每种方法都有其优缺点,但这些似乎超出了这个问题的范围。