LoginSignup
2
1

More than 5 years have passed since last update.

viewのrspecでrenderを複数回呼ぶ方法

Last updated at Posted at 2015-04-27

分かるまでに時間がかかったので、共有します。

方法

rendered.class == Stringなので、rendered.clearをします。

使用例

マッチする文字列の数を数えないと、表示されていることの確認ができないカラムをテストする場合

spec/equipments/show.html.erb_spec.rb
describe "books/show", type: :view do
  before do
    @book = Book.new
  end

  it '販売累計が表示されること' do
    old_sold_count = 1
    new_sold_count = 2

    @book.sold_count = old_sold_count
    render

    expect(rendered).to match old_sold_count.to_s
    before_old_sold_count = rendered.scan(old_sold_count.to_s).count
    before_new_sold_count = rendered.scan(new_sold_count.to_s).count

    @book.sold_count = new_sold_count
    # renderedを消してから、再度render
    rendered.clear
    render

    after_old_sold_count = rendered.scan(old_sold_count.to_s).count
    after_new_sold_count = rendered.scan(new_sold_count.to_s).count
    expect(after_old_sold_count - before_old_sold_count).to eq(-1)
    expect(after_new_sold_count - before_new_sold_count).to eq(1)
 end
end

まとめ

rspec view render twiceとかでググっても情報が出ませんでしたが、renderedstringなので、この方法で問題ないと思います。

以上、誰かのお役に立てれば幸いです。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1