gpt4 book ai didi

ruby - Buildr, RSpec——将构建参数传递给测试

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:05 25 4
gpt4 key购买 nike

我有 »buildr« »buildfile« 可以触发一些 »rspec« 测试。我想将一些路径参数传递给测试,这样就不会在加载测试资源文件时造成麻烦。在 »buildfile« 中,我有这段代码来触发测试:

RSpec.configure do |config|
config.add_setting :spec_resources_dir, :default => _(:src, 'spec', 'ruby', 'resources')
end

RSpec::Core::RakeTask.new(:run_rspec) do |t|
t.pattern = 'src/spec/**/*_spec.rb'
end
task test => [:run_rspec]

但是如果我尝试像这样检索 specfile 中的值:

RSpec.configuration.spec_resources_dir

我收到这个错误

undefined method `spec_resources_dir' […] (NoMethodError)

有什么想法吗?

最佳答案

RSpec 的 rake 任务在单独的进程中运行规范,因此您在构建文件中使用 RSpec.configure 进行的配置对正在运行的规范不可见。

将信息从构建文件传递到规范任务的两个建议:

  1. 生成一个 spec_helper 并从您的规范中要求它(或通过 rspec 的 -r 命令行选项和 rspec_opts 配置参数 RSpec::Core::RakeTask).您可以使用构建器的过滤功能将构建文件中的值替换为帮助程序。
  2. ENV 中设置值,然后从您的规范中读取它们。环境变量由父进程共享给子进程。

根据要求,#1 的示例:

RSpec::Core::RakeTask.new do |t|
t.rspec_opts = "-r '#{_(:target, 'spec_helper.rb')}'"
end

这假设您(可能在另一个任务中)将规范助手生成到 _(:target, 'spec_helper.rb')

关于ruby - Buildr, RSpec——将构建参数传递给测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21095334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com