包括模块,除非期望文件位于某个目录中?

杰·塔卡(JayTarka)

假设我的项目中有四个规格文件:

spec/foo/foo_one_spec.rb
spec/foo/foo_two_spec.rb
spec/baz/baz_one_spec.rb
spec/baz/baz_two_spec.rb

仅当当前规范文件不在baz目录中时,如何才能将规范文件配置为包括某个模块

以下是一些伪代码来说明:

module Moddy
    extend RSpec::SharedContext
    let(:message){ 'hello' }
    before{ puts message }
end

RSpec.configure do |c|
    # path is pseudo-code; pretending it returns the path of the current expectation
    c.include Moddy unless path.includes?('/baz/')
end

因此,在运行我的规格时,'hello'除了文件baz_one_spec和中的期望之外,我希望所有期望之前都将其打印到屏幕上baz_two_spec

如果无法做到这一点,您能告诉我如何使用标签来实现吗?内部的所有规格baz都必须加标签,我接受这一点。

克里斯蒂安

遵循Frederick Cheung的想法,我弄清楚了如何自动为目录定义元数据,然后可以有条件地将该模块包含在该元数据中。这基于rspec-rails 从文件位置推断规范类型的方式

我正在处理两个琐碎的规范:

# spec/foo/foo_spec.rb
require 'spec_helper'

describe 'Foo' do
  it 'printed something before the test ran' do
    expect(1).to eq(1)
  end
end
# spec/bar/bar_spec.rb
require 'spec_helper'

describe 'Bar' do
  it 'did not print anything before the test ran' do
    expect(1).to eq(1)
  end
end

在中spec_helper,我复制了您的,Moddy并使用define_derived_metadata标记了以下文件spec/foo

# spec/spec_helper.rb
RSpec.configure do |config|
  config.define_derived_metadata(file_path: %r(spec/foo)) do |metadata|
    metadata[:include_moddy] = true
  end

  config.include Moddy, include_moddy: true
end

file_path选项接受正则表达式以匹配并运行该块。这个可以接受spec/foo,但是您的可以接受其他所有内容,或者您​​可以像rspec-railswith一样在目录列表中为每个表达式创建一个表达式DIRECTORY_MAPPINGS

之后,这是运行规范的样子:

$ rspec

Bar
  did not print anything before the test ran

Foo
hello
  printed something before the test ran

Finished in 0.00101 seconds (files took 0.07205 seconds to load)
2 examples, 0 failures

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Python中,如何获取位于模块内文件目录的路径

js文件位于同一目录中时找不到模块错误

即使与我正在使用的文件位于同一目录中,也无法导入模块

创建位于多个目录中的文件列表

如何重命名某个目录中的文件?

QPluginloader 错误:“无法加载库:找不到指定的模块”,除非插件与 .exe 位于同一文件夹中

如何使用位于父目录中的eslint插件模块?

Anaconda软件包问题:内部模块找不到位于同一目录中的数据文件

Spyder Exception超链接不适用于位于全局工作目录的子文件夹中的模块

如何从PHP中的某个目录中捕获文件或目录

在父目录中包括文件夹

如何绘制不同的次要情节在位于某个目录的不同文件的条款?

如何对某个目录中的目录和文件进行排序?

读取与JavaScript文件位于同一目录中的文件

Python 3:与脚本位于同一目录中的模块:“ ImportError:未命名模块”

如何包含位于子文件夹中的公共模块

UWP:如何启动位于特定目录中的exe文件?

文件存在且位于IS目录中,但listFiles()返回null

Mutt发送的文件位于主目录中-如何重定位

根目录应位于routes.rb文件中的何处?

批量移动位于子目录中的文件

React/Electron 不加载位于公共目录中的静态文件

当包位于子目录中时,从顶层包括包数据Python

使用Scala / Spark列出目录中的文件(包括文件信息)

Python:在模块目录中找不到文件

从导入模块的目录中读取文件

删除目录中的文件,该文件也位于另一个目录中

返回某个日期范围内目录中的文件

检查某个目录中是否存在文件夹