2

我正在尝试为我编写的 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 中的某些内容,有人可以帮忙吗?

4

2 回答 2

2

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

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

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

require 'my_gem_name/my_class'

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

于 2012-12-13T23:01:00.903 回答
1

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

如果您已经打包了 gem 并且正在尝试从不同的项目中对其进行测试,那么在加载路径中的某个位置需要 gem。

于 2012-12-13T19:40:39.147 回答