3

app/helpers/foo.rb で自分の Rails プロジェクト Foo にヘルパー クラスを追加しました。このように見えます。

class Foo
   #....stuff
end

一部のモデルで使用していますが、すべて正常に動作します。ただし、spec/helpers/foo_helper_spec.rb には、

require 'spec_helper'
describe Foo do
end

これにより、rspec がクラッシュします (失敗したテストは報告されませんが、実際にはクラッシュします)。

/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:「インクルード」: 間違った引数タイプのクラス (予期されるモジュール) (TypeError)

説明行を削除してファイルを空にすると、すべてが機能しますが、すぐにいくつかのテストを追加したいと思います。

これを修正する方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

4

rails は、設定より慣習のパラダイムに従います。これらの規則の 1 つは、モジュールをヘルパー フォルダーに配置することです。これは、モジュールがコントローラーとビューに含まれるためです。

そのため、実際にはクラスであるモジュールをインクルードしようとすると、rspec は失敗します。

そこに実際のクラスが必要な場合は、別のディレクトリに配置して、これが通常の Rails ヘルパーではないことを明確にする必要があると思います!

たとえば、ビューにある種のデコレータを実装している場合は、それをデコレータ フォルダに入れます。モデルに何らかのアダプターを実装している場合は、それをモデル フォルダーまたはモデル サブフォルダーに配置します。

于 2013-06-18T01:42:39.877 に答える