ウェブサービスを作っています。

active_decorator-rspec gem が便利

Active Decorator の decorator 内で、ヘルパーのメソッドを使っていると、テストをうまく書けないという問題があります。

今までは、

active_decorator のdecoratorをrspecでテストする方法 - アジャイルSEを目指すブログ

を参考にさせていただいていたのですが、これだと、ApplicationController に書いた helper_method がテストで使えないようです。

悩んでいたところ、active_decorator-rspec という便利な gem を見つけました。

Gemfile は、こんな感じ。

gem 'active_decorator'

group :test do
  gem 'active_decorator-rspec', require: false
  gem 'rspec-rails', group: 'development'
end

あとは、spec/rails_helper.rb で

require 'active_decorator/rspec'

と読み込んで、

spec/decorators 内のテストで、

describe UserDecorator, '.hoge' do
  let(:user) { User.new }
  subject { decorate(user).hoge }
end

のように使えます。