VScode上のターミナルで下記コマンドを実行してテストに失敗した際、
exec rspec spec/models/article_spec.rb
以下の様にパネルごと消失し、
「ターミナル プロセス "/bin/zsh '-l'" が終了コード 1 で終了しました。」のメッセージが表示されます。↓
直接ターミナルで実行した場合、「プロセスが完了しました」以降、入力を受け付けなくなります。↓
テスト内容が成功している場合はエラーメッセージは表示されませんが、統合ターミナルは強制終了します。↓
rails routesやrails db:migrate:status等のコマンドは正常に実行され、VScodeのパネルは消失しません。
他のアプリケーションでも同様の現象が発生します。
原因もしくは解決に行き着く為のアドバイス等ありましたら宜しくお願いします。
###関連するコード
単体テストのコード
Ruby
1require 'rails_helper' 2 3RSpec.describe Article, type: :model do 4 before do 5 @article = FactoryBot.build(:article) 6 end 7 8 describe "記事を投稿する" do 9 context "投稿に成功する" do 10 it "画像、タイトル、カテゴリ、本文が入力されている場合、投稿できる" do 11 expect(@article).to be_valid 12 end 13 end 14 context "投稿に失敗する" do 15 it "タイトルが空の場合、投稿に失敗する" do 16 @article.title = "" 17 @article.valid? 18 expect(@article.errors.full_messages).to include("itleを入力してください")#失敗箇所 19 end 20 it "カテゴリが空の場合、投稿に失敗する" do 21 @article.category_id = nil 22 @article.valid? 23 expect(@article.errors.full_messages).to include("Categoryを入力してください") 24 end 25 it "本文が空の場合、投稿に失敗する" do 26 @article.text = "" 27 @article.valid? 28 expect(@article.errors.full_messages).to include("Textを入力してください") 29 end 30 end 31 end 32end
FactoryBotの設定
Ruby
1FactoryBot.define do 2 factory :article do 3 title {Faker::Name.initials(number: 2)} 4 category_id {rand(1..17)} 5 text {Faker::Lorem.sentence} 6 7 association :user 8 9 after(:build) do |article| 10 article.images.attach(io: File.open('app/assets/images/paper_fibers.png'), filename: 'test_image.jpg') 11 end 12 end 13end
rspecの設定
--require spec_helper --format documentation
rspecのバージョン詳細
rspec-core (3.10.1) rspec-support (~> 3.10.0) rspec-expectations (3.10.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) rspec-mocks (3.10.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.10.0) rspec-rails (4.0.2) actionpack (>= 4.2) activesupport (>= 4.2) railties (>= 4.2) rspec-core (~> 3.10) rspec-expectations (~> 3.10) rspec-mocks (~> 3.10) rspec-support (~> 3.10) rspec-support (3.10.2)
実行時のtest.log
[1m[35m (9.3ms)[0m [1m[35mSET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m [1m[35m (10.6ms)[0m [1m[34mSELECT `ar_internal_metadata`.`value` FROM `ar_internal_metadata` WHERE `ar_internal_metadata`.`key` = 'schema_sha1'[0m [1m[35m (0.2ms)[0m [1m[35mSET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483[0m [1m[35m (0.5ms)[0m [1m[34mSELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC[0m [1m[35m (0.1ms)[0m [1m[35mBEGIN[0m [1m[35m (0.1ms)[0m [1m[31mROLLBACK[0m [1m[35m (0.1ms)[0m [1m[35mBEGIN[0m [1m[35m (0.1ms)[0m [1m[31mROLLBACK[0m [1m[35m (0.1ms)[0m [1m[35mBEGIN[0m [1m[35m (0.1ms)[0m [1m[31mROLLBACK[0m [1m[35m (0.1ms)[0m [1m[35mBEGIN[0m [1m[35m (0.2ms)[0m [1m[31mROLLBACK[0m
試したこと
以下のgemを再インストール
- gem 'factory_bot_rails'
- gem 'faker'
- gem 'rspec-rails', '~> 4.0.0'
補足情報(FW/ツールのバージョンなど)
- mac 11.4
- Ruby 2.6.5
- Rails 6.0.3.6
- mysql2 0.4.4
- gem 3.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。