##環境
Ruby 3.0.2
Rails 6.1.4.1
##Structについて
Rspecで共通処理concernsのメソッドテストを実行する際はStructを使うとテストできる
下記のようなconcernsがあったとする
concerns/name_arrangeable.rb
module NameArrangeable
def full_name
"#{first_name} #{last_name}"
end
end
1. Structを使ってテスト用のクラスをつくる。moduleをincludeしておく
2. 作ったクラスをnewする
→name_arrangeable.full_nameでメソッドを呼び出して使えるようになる
spec/models/name_arrangeable_spec.rb
let!(:module_test_class) { Struct.new(:name_arrangeable) { include NameArrangeable } }
let!(:name_arrangeable) { module_test_class.new }
describe '#full_name' do
name_arrangeable.full_name
...
end
##参考