「Ruby on Rails 速習実践ガイド」を学習中です。
ユーザー機能とタスク投稿ができるアプリケーションの開発をしています。
第5章でRSpecを用いて自動テストを行なっていますがエラーが出てしまい先に進めません。
使用している機能は以下の通りです。
Ruby
rails
Capybara
RSpec
FactoryBot
Vagrant(centOS)にて開発
テスト内容
ユーザーAがログインしている時、ユーザーAが作成したタスクが一覧表示されるか
tasks_spec.rb
require
1 2describe 'タスク管理機能', type: :system do 3 describe '一覧表示機能' do 4 before do 5 # ユーザーAを作成しておく 6 user_a = FactoryBot.create(:user, name: 'ユーザーA', email: 'a@example.com') 7 # 作成者がユーザーAであるタスクを作成しておく 8 FactoryBot.create(:task, name: '最初のタスク', user: user_a) 9 end 10 11 context 'ユーザーAがログインしている時' do 12 before do 13 # ユーザーAでログインする 14 visit login_path 15 fill_in 'メールアドレス', with: 'a@example.com' 16 fill_in 'パスワード', with: 'password' 17 click_button 'ログインする' 18 end 19 20 it 'ユーザーAが作成したタスクが表示される' do 21 # 作成済みのタスクの名称が画面上に表示されていることを確認 22 expect(page).to have_content '最初のタスク' 23 end 24 end 25 26 27```エラーになっているところ 28
[vagrant@localhost taskleaf]$ bundle exec rspec spec/system/tasks_spec.rb
FF
Failures:
-
タスク管理機能 一覧表示機能 ユーザーAがログインしている時 ユーザーAが作成したタスクが表示される
Got 0 failures and 2 other errors:1.1) Failure/Error: user_a = FactoryBot.create(:user, name: 'ユーザーA', email: 'a@example.com')
ArgumentError: Factory not registered: user # ./spec/system/tasks_spec.rb:7:in `block (3 levels) in <top (required)>'
1.2) Failure/Error: raise Error::WebDriverError, self.class.missing_text unless path
Selenium::WebDriver::Error::WebDriverError: Unable to find chromedriver. Please download the server from https://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver.
エラー1 factoryにuserが登録されていないということでしょうか。UserモデルとTaskモデルを紐付けするところがあったのですがそこがうまくいっていないのでしょうか。 エラー2 chromedriverがないのだと思い、chromedriverを直接ダウンロードしようとしたのですが、'Webdrivers'というgemで自動的にダウンロードされるはずということでよいのでしょうか。とすると何が問題なのでしょうか。 bundle installh
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 11:46
2019/10/07 12:21
2019/10/07 12:27
2019/10/07 12:32