【问题标题】:Writing tests in RSpec for a Gem在 RSpec 中为 Gem 编写测试
【发布时间】:2012-12-13 19:04:30
【问题描述】:

我正在尝试为我编写的 gem 编写 RSpec 测试,但我无法让测试识别我编写的模块以及与这些模块相关的方法。

这是我的 spec_helper.rb:

require 'rspec'

RSpec.configure do |config|

end

我的规格文件:

require 'spec_helper'

describe MyCompany::SomeHelper do
  describe '#self.get_token' do
    token = MyCompany::SomeHelper.get_token
  end
end

当我运行测试时,我收到以下错误消息:MyCompany::SomeHelper:Module (NoMethodError) 的未定义方法 `get_token'。

但是,当我将它包含在另一个应用程序中时,gem 本身可以正常工作。我想我可能没有正确配置 RSpec 中的某些内容,有人可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails ruby testing rspec gem


    【解决方案1】:

    混乱可能是因为 Rails,因为 Rails 会加载所有内容,并且需要 'spec_helper' 是您唯一需要在那里做的事情。

    RSpec 会自动将 lib 目录添加到您的加载路径中,因此您可以轻松地从您的规范中获取您的代码。

    假设您要测试此文件:lib/my_gem_name/my_class.rb,然后将此代码放在您的规范之上:

    require 'my_gem_name/my_class'
    

    如果你不打算在你的 spec_helper 中配置任何东西,你不需要创建它并需要它。事实上,如果您正在做纯粹的孤立测试,我会建议您不要这样做。

    【讨论】:

      【解决方案2】:

      您需要包含 SomeHelper 模块定义的文件。你的 spec_helper 和你的 spec 文件都没有把它拉进来。这假设你正在与你的 gem 相同的项目中编写测试。

      如果您已经打包 gem 并尝试从不同的项目中对其进行测试,则在加载路径中的某处需要 gem。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-26
        • 1970-01-01
        • 2013-07-13
        • 1970-01-01
        • 2019-08-12
        相关资源
        最近更新 更多