質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

2308閲覧

Everyday Railsのセットアップにて、masterブランチのテストを全てパスしたい

hiroki_takashim

総合スコア5

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

1グッド

1クリップ

投稿2020/03/14 08:45

困っていること:
Everyday railsのセットアップを行なっておりますがbin/rspecを実行した際、

Failed examples: rspec ./spec/system/tasks_spec.rb:12 # Tasks user toggles a task

の箇所のみテスト失敗してしまいます。
解消の方法をご教授いただけると幸いです。

発生している問題・エラーメッセージ

user toggles a task (FAILED - 1) Failures: 1) Tasks user toggles a task Got 0 failures and 2 other errors: 1.1) Failure/Error: visit root_path ArgumentError: unknown keyword: write_timeout 1.2) Failure/Error: def initialize(io, read_timeout: 60, continue_timeout: nil, debug_output: nil) @read_timeout = read_timeout @rbuf = '' @debug_output = debug_output @io = case io when Socket, OpenSSL::SSL::SSLSocket, IO io when StringIO PatchedStringIO.new(io.string) ArgumentError: unknown keyword: write_timeout

試したこと

このサイトを参考に
Gemfile内にて

group :test do - gem 'selenium-webdriver' - gem 'chromedriver-helper' + gem 'webdrivers' # other test-only dependencies ... end

webdriversに変更したものの、依然としてエラーを吐きます。

補足情報(FW/ツールのバージョンなど)

Mac/Atom/Chromeにて作業、
Rubyのバージョンは2.6.3でございます。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

翻訳者チームの伊藤です。
Everyday Rails - RSpecによるRailsテスト入門を読んでいただき、どうもありがとうございます!

すでにご覧になられたかもしれませんが、Everyday Railsのサンプルアプリセットアップは以前こちらのブログ記事とYouTube動画で解説しています。

この動画の中ではこういったエラーは発生していません。

そこで"rspec unknown keyword: write_timeout"というようなキーワードで検索したところ、以下のissueがヒットしました。

どうやらhiroki_takashimさんがお使いのRuby 2.6環境では、webmock 3.5.0未満はうまく動作しないようです。
Gemfile.lockを見れば、プロジェクト内で使用するwebmockのバージョンを確認できます)

動画の中ではRuby 2.4.9を使用しています。

解決策その1(推奨)

rbenvやrvmを使ってRuby 2.4.9をインストールし、サンプルアプリをRuby 2.4.9で動かすようにしてください。
上で紹介した動画のように、Ruby 2.4系の環境であればエラーなく動作するはずです。

解決策その2

Ruby 2.6環境を使用し続ける場合はwebmock 3.5.1を使用してみてください。

Gemfile

1gem 'webmock', '3.5.1'
$ bundle update webmock

ただし、Ruby 2.6環境やwebmock 3.5を使った実行環境は本書の想定外なので、もしかすると別の新しい問題が発生する可能性があります。(いわゆる「ヤクの毛刈り」になる恐れがあります)

投稿2020/03/14 11:13

jnchito

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki_takashim

2020/03/14 14:27

伊藤様 ご教授頂いた通り、Rubyのversionを2.4系にすることで ArgumentError: unknown keyword: write_timeout は解決することができました! 本件とは関連がないかもしれませんが参考までに、 その後のテストにて Tasks user toggles a task Failure/Error: visit root_path VCR::Errors::UnhandledHTTPRequestError: There is currently no cassette in use. としてVCR関連のエラーを吐くようになってしまいました。 そのため、vcr.rb内の VCR.configure do |config| end 内部に config.allow_http_connections_when_no_cassette = true を追加することで対処できました。 この度は誠に有難う御座いました。
takumi0703

2021/04/11 06:52

VCR::Errors::UnhandledHTTPRequestError:について参考になりました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問