モデルのメソッドのテストをするとき、戻り値と副作用の二つをテストしたいときにキレイに書く方法の考察

メモ発掘したので貼っておく。だれか良い案あったら教えてください><

現状

下記のように戻り値と副作用でdescribeを分けて対処している。でもちょう見栄え悪い…

describe '#register' do
  describe "戻り値" do
    subject { user.regisger }
    it '...' 
  end

  describe "副作用" do
    subject do 
      user.register
      user
    end

    it '...'
  end
end

解決案

そもそもそういうメソッドを書かずに、副作用だけ、もしくは副作用無しで戻り値だけのメソッドで分けるのがよい?

追記

なんかこれだと自分以外の人に意味通じなさそうなのでサンプルコード修正しました。戻り値と副作用でsubjectが異なるのでわざわざ分けてる次第です。全部フラットに書いてもいいのですが it の中身が膨れるからあまりやりたくない感じです><