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 の undefined method `get_token' (NoMethodError)。

ただし、別のアプリケーションに含めると、宝石自体は正常に機能します。RSpec で何かを正しく構成していない可能性があると思いますが、誰か助けてもらえますか?

4

2 に答える 2

2

Railsはすべてをロードし、「spec_helper」を必要とすることだけが必要なため、混乱はおそらくRailsによるものです。

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 に答える