RSpecのテストでブラウザ上のpathとテストで確認するpathが一致しない
railsで簡単なブログアプリを作成しています。そこで、ブログを投稿するまでの流れをRSpecのsystem specでテストを書いているのですが、投稿に失敗した時のpathがブラウザ上では/posts/newになっているのですが、テストで
expect(page).to have_current_path new_post_pathと書くとエラーになってしまいます。なぜこのようなことが起きてしまうのかがわからずご教授いただきたいです。
発生している問題・エラーメッセージ
ruby
1 Failure/Error: expect(page).to have_current_path new_post_path 2 expected "/posts" to equal "/posts/new"
上記エラーのように失敗後は投稿の一覧画面へのpathが期待されてしまいます。
該当のソースコード
ruby
1resources :posts, only: %w[new create]
ruby
1 def new 2 @post = Post.new 3 end 4 5 def create 6 @post = Post.new(post_params) 7 if @post.save 8 redirect_to posts_path, notice: "#{@post}を投稿しました。" 9 else 10 render :new, status: :unprocessable_entity 11 end 12 end
失敗するテスト
ruby
1it '文章を投稿できない' do 2 visit new_post_path 3 click_button '登録する' 4 5 expect(page).to have_content '投稿内容を入力してください' 6 expect(page).to have_current_path new_post_path 7end
補足情報
ruby: 3.1.3
rails: 7.0.4
rspec-rails: 6.0.1
capybara: 3.38.0

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。