【Rails】Controller Concernのテスト
Controller Concernのテスト
例えばいいねアクションを追加するためのLikable
というものがあるとする.
これのテストをどうするか.
# app/controllers/concerns/likable.rb module Likable extend ActiveSupport::Concern included do before_action :set_likable end def like current_user.likes.create(likable: @likable) # viewをrenderしたりとか end private def set_likable raise NotImplementedError, "#{self.class}#set_likable is not implemented" end end
anonymous controllerをつかう
ApplicationController
とかをスーパークラスにしてanonymous controllerを作る.
# spec/controllers/concerns/likable_spec.rb require 'rails_helper' RSpec.describe Likable, type: :controller do controller(Application) do include Likable end # テスト書け end
routing errorでるときは
routingついかしてあげる.
# spec/controllers/concerns/likable_spec.rb require 'rails_helper' RSpec.describe Likable, type: :controller do controller(Application) do include Likable end before { routes.draw { put 'like' => 'anonymous#like' } } # テスト書け end
template missingでるときは
アクションをoverrideしてrender nothing: true
する.
ただ,moduleで作ったアクションをテストするときはこれだと2重renderになるかも….
たぶん良くない例.
# spec/controllers/concerns/likable_spec.rb require 'rails_helper' RSpec.describe Likable, type: :controller do controller(Application) do include Likable def like super render nothing: true end end before { routes.draw { put 'like' => 'anonymous#like' } } # テスト書け end
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (7件) を見る
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る