何时在rspec中创建examples.txt文件?

xiozqbni  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(414)

我想将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)>'
lp0sw83n

lp0sw83n1#

事情就是这样发生的:https://github.com/rspec/rspec-core/blob/e7c5d030966a7e8dad3e0a67c61920c4f2437c15/lib/rspec/core/runner.rb#l90


# Configures and runs a spec suite.

      #
      # @param err [IO] error stream
      # @param out [IO] output stream
      def run(err, out)
        setup(err, out)
        return @configuration.reporter.exit_early(@configuration.failure_exit_code) if RSpec.world.wants_to_quit

        run_specs(@world.ordered_example_groups).tap do
          persist_example_statuses
        end
      end

如果你探索 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核心,引入一个您需要的钩子(我认为它不太可能被接受,因为存在更简单的解决方案)
每种方法都有其优缺点,但这些似乎超出了这个问题的范围。

相关问题