ruby on Rails のテストが通らなかった

Ruby on Rails Tutorialのテストの項目を実行時にエラー発生したけど、調べつつ回復できたのでメモ。

エラー発生

テストを以下のコマンドで実行

1
>rails t

結果以下のエラーを出力

1
2
3
4
5
6
7
8
C:\Users\Record\OneDrive\dev\test113-tryrails\apptutorial2>rails t
2019-08-17 10:08:46 WARN Selenium [DEPRECATION] Selenium::WebDriver::Chrome#driver_path= is deprecated. Use Selenium::WebDriver::Chrome::Service#driver_path= instead.
Traceback (most recent call last):
31: from bin/rails:4:in `<main>'
30: from bin/rails:4:in `require'
省略
1: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/chrome/service.rb:38:in `driver_path='
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/platform.rb:144:in `assert_executable': not executable: "C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/chromedriver-helper-2.1.1/bin/chromedriver-helper" (Selenium::WebDriver::Error::WebDriverError)

Selenium::WebDriver::Chromeは廃止されたので、
Selenium::WebDriver::Chrome::Serviceを使ってほしいという内容はわかったのだけど、何をすればいいのか?

調べたら、teratail:ChromeDriverとChromeのバージョンの調整方法について。に行き当った。

こちらを参考にGemfileの内容を一か所書き換えた

Gemfile
1
2
3
4
5
6
7
8
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
# Easy installation and use of chromedriver to run system tests with Chrome
#gem 'chromedriver-helper' <--ここをコメントアウト下を追加
gem "webdrivers", "~> 3.0"
end

インストールを実行

1
>bundle install

再度テスト実行すると以下のようにテストの実行が成功した。

1
2
3
4
5
6
7
8
9
10
>rails t
Run options: --seed 10372

# Running:

...

Finished in 2.590945s, 1.1579 runs/s, 1.1579 assertions/s.

3 runs, 3 assertions, 0 failures, 0 errors, 0 skips

エラー発生2

Ruby on Rails Tutorial5.3.4のrails generate integration_test site_layoutを行ったところテストが通らなくなった。

実行時以下の表示になった。

1
2
3
4
5
6
7
8
9
10
11
12
13
ansi: 'gem install win32console' to use color on Windows
Started with run options --seed 55867

ERROR["test_layout_links", #<Minitest::Reporters::Suite:0x000000000be965a0 @name="SiteLayoutTest">, 1.7727139209164307]
test_layout_links#SiteLayoutTest (1.77s)
NoMethodError: NoMethodError: assert_template has been extracted to a gem. To continue using it,
add `gem 'rails-controller-testing'` to your Gemfile.
test/integration/site_layout_test.rb:9:in `block in <class:SiteLayoutTest>'

6/6: [===================================] 100% Time: 00:00:01, Time: 00:00:01

Finished in 1.90115s
6 tests, 10 assertions, 0 failures, 1 errors, 0 skips

記載の通り,gem 'rails-controller-testing'をgemfileに追加し、bundle installを実行

同様のエラーは無くなった。

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼうのエラー対応だけ、この記事に追記しようと思う。

ではでは。