代码之家  ›  专栏  ›  技术社区  ›  craig

向Ruby实例动态添加常量值

  •  1
  • craig  · 技术社区  · 6 年前

    我在测试一个模块( 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 回复  |  直到 6 年前
        1
  •  2
  •   Aleksei Matiushkin    6 年前

    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