私は、Apotonick の Trailblazer gem を試しています。これは、Rails の上により多くの構造をもたらします。まだすべてを受け入れていませんが、これまでに試したものが本当に気に入っています。これは Trailblazer の強みの 1 つであり、段階的に掘り下げて、段階的に Rails プロジェクトに取り入れることができます。Trailblazer の本を購入しました。現在それを読んでいますが、それが私の質問につながります。
サンプルアプリ ( @see https://github.com/apotonick/gemgem-tbrrb )に取り組んでいますが、rspec を使用しています。
セルの出力を単独でテストしたかったのです。この本では、テスト フレームワークは Test::Unit であり、一部のヘルパー メソッドには Test::Unit のセルが付属しています。
rspec の場合は別の話です... rspec-cells を試しましたが、Trailblazer で使用されている現在のセル バージョン (4.0) では動作しないようです。そこで、セルの出力を取得するためのセットアップを可能な限り最小にすることを目標に、いくつかのサーモン コーディングを試みました。これにより、単純なヘルパーを備えたモジュールが作成されました
ここにコードがあります(ここにもあります:https://github.com/demental/gemgem-trbrb/blob/3ec9df1d5f45b880f834486da3c150d4b65ec627/spec/support/cells.rb)
module Cell
module Rspec
private
def concept(name, *args)
controller_stub = double(
url_options: {
host: '',
optional_port: 80,
protocol: 'http',
path_parameters: ''
}
)
Capybara.string(Cell::Concept.cell name, controller_stub, *args)
end
end
end
RSpec.configure do |config|
config.include Cell::Rspec, type: :cell
end
スタブ化された url_options メソッドを作成する必要があった理由は、(完全な要求オブジェクトを使用して) 完全なコントローラーをセットアップする必要なく、pathHelpers メソッドをセル ビューで機能させるためでした。
非常にミニマルなセットアップになるという点で気に入っています。しかし、コントローラーを模倣しているだけなので、あまりにもダミーになっていないかどうか疑問に思っていますが、その依存関係を取り除くことができていないように感じます。どう思いますか ?