gpt4 book ai didi

ruby - 在 Ruby 1.9.3 中通过 RSpec 配置包含命名空间模块

转载 作者:数据小太阳 更新时间:2023-10-29 07:40:55 27 4
gpt4 key购买 nike

我喜欢使用 RSpec 的 include 配置方法来包含模块仅用于命名空间,这样我就不必为它们使用完全限定的名称内部类和模块。这适用于 Ruby 1.9.2 中的 RSpec 2.11.0。但现在在 Ruby 1.9.3 上这不再起作用了。我怎样才能让它重新工作?

这里有一个 foobar_spec.rb 的例子:

module Foo
class Bar
end
end

RSpec.configure do |config|
config.include Foo
end

describe Foo::Bar do
it "should work" do
Bar.new
end
end

如果您通过以下命令调用它:

rspec foobar_spec.rb

它将在 Ruby 1.9.2 中正常工作。但它会在 Ruby 1.9.3 中引发以下错误:

Failure/Error: Bar.new
NameError:
uninitialized constant Bar

最佳答案

mailing list entry讨论了 1.9.3 中关于如何查找常量的根更改,所以它看起来像是一个有意的更改。

您可以像这样确定整个测试的范围:

module Foo
describe Bar do
it "should work" do
Bar.new
end
end
end

作为另一种解决方案,您可以将新对象的创建提取到 beforelet 中,或者只将对象定义为 subject测试。

关于ruby - 在 Ruby 1.9.3 中通过 RSpec 配置包含命名空间模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042298/

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