小编GcL*_*GcL的帖子

如何在 Rspec 测试中允许对模块常量的不合格访问?

希望在 RSpec 示例中包含模块中的常量。

这个问题正在寻找一种方法来允许对 rspec 3.9 示例中的模块中的常量进行无限定引用。这主要是为了节省空间和打字。

module MyConsts
  FOO = "foo"
end

RSpec.describe "Tests Module Constants" do
  it 'has unqualified access to constants.' do
    expect(FOO).to eq("foo") 
  end
end
Run Code Online (Sandbox Code Playgroud)

无效的方法:

RSpec::Core::Configuration#include不选取常量。

这是一种从 module 包含辅助函数的便捷方法,但它与在类上使用 include 不同,因为常量无法按预期使用。

module MyConsts
  FOO = "foo"
end

RSpec.configure do |c|
  c.include MyConsts
end

RSpec.describe "Tests Module Constants" do
  it 'has qualified access to constants.' do
    expect(MyConsts::FOO).to eq("foo")
  end

  it 'has unqualified access to constants.' do
    expect(FOO).to eq("foo") 
  end
end
Run Code Online (Sandbox Code Playgroud)

不合格访问示例失败。如果能够混合模块中的常量就好了,这样这样的例子就可以通过。

Failures:
  1) Tests …
Run Code Online (Sandbox Code Playgroud)

ruby rspec

5
推荐指数
1
解决办法
381
查看次数

标签 统计

rspec ×1

ruby ×1