🔍
Meilisearch-RailsをRSpecなどのテストで無効化する
概要
Meilisearch-RailsをRuby on Railsで使用する場合、Modelに include MeiliSearch::Rails を入れるだけで手軽にModelとMeilisearchの同期が行えます。
しかし、テストデータを作成する際にもCallbackが動いてしまい、不要な場合でも同期が行われてしまうのでテストが遅くなってしまいます。
そこで、この同期を無効化する方法について調べたので記事として残します。
結論
MeiliSearch::Rails.deactivate! を呼びだけでOK
該当のソースコード
有効化したい場合は MeiliSearch::Rails.activate! を呼ぶ
該当のソースコード
RSpecでの利用
全体的に無効化、任意のテストだけ有効化したい場合は以下の実装でいけます!
rails_helper.rb
RSpec.configure do |config|
config.before :suite do
MeiliSearch::Rails.deactivate!
end
config.before(:each, search: true) do
MeiliSearch::Rails.activate!
end
end
有効化したいテスト
sample_spec.rb
# テスト全体で有効化
RSpec.describe Sample, search: true do
end
# 任意のテストだけ有効化
RSpec.describe Sample do
context 'hoge', search: true do
end
end
Discussion