hello-world
webエンジニアのメモ。とりあえずやってみる。

[rails]RSpec+Capybara+Kaminariのテスト時にwrong number of argumentsエラー

公開日時
it 'ページが表示される' do
    visit '/'
    expect(page.status_code).to eq 200
end

RSpec(3.1.0) + Capybara(2.4.4) + Kaminari(0.16.1) でコントローラのテストを書いていた際に、ページャを使用したページの表示テストをしようとしたところ、以下のようにwrong number of argumentsエラーが発生しました。

ArgumentError:
    wrong number of arguments (1 for 0)

調べてみるとCapybara::DSLで使用しているpageメソッドと、kaminariのpageメソッドがconflictしてしまっているのが原因のようです。

自分の spec/rails_helper.rb の書き方が間違っていました。

  • 間違い
# spec/rails_helper.rb

require 'capybara/rspec'
require 'capybara/rails'
include Capybara::DSL
  • 正しい
# spec/rails_helper.rb

require 'capybara/rspec'
require 'capybara/rails'
RSpec.configure do |config|
  config.include Capybara::DSL
end

Rspec設定内でincludeするようにしたところエラー無く実行できました。

テスト周りは色々はまるので勉強しないと。

参考