动态地向Ruby实例添加常量值

时间:2018-09-26 15:28:01

标签: ruby rspec

我正在通过创建虚拟实例来测试模块(Foo::Api::Utility)。该模块引用由includes类别(self.class::BASE_URL)定义的常量。

我希望能够访问此值并进行设置。

这不起作用:

before(:each) do
  @utility = Object.new
  @utility.extend(Foo::Api::Utility)
  @utility.const_set('BASE_URL','https://domain.tld/api/v1')
end

正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

那:

before(:each) do
  @utility_class = Class.new
  @utility_class.include(Foo::Api::Utility)
  @utility_class.const_set('BASE_URL','https://domain.tld/api/v1')
  @utility = @utility_class.new
end

或者,以更简洁的方式:

before(:each) do
  @utility =
    Class.new do
      include Foo::Api::Utility
      const_set :BASE_URL,'https://domain.tld/api/v1'
    end.new
end