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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

924閲覧

RSpecでのControllerとViewのテスト deviseなし

a0dinw225

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/12/28 07:12

前提・実現したいこと

devise使用しないWebアプリ実装した場合のRSpecによるテストコードの書き方
controllerとviewの書き方が知りたいです。

deviseを使用せずにログイン認証があるWebアプリを実装しました。

RSpecでテストコード書くのは初めてなので調べてやってみたのですが、上記に該当するテストコードが見つからなかったのでどう書けばいいのかわかりません。
どなたか参考になるテストコードありましたら教えていただきたいです。

deviseで実装したことがまだないですが最悪、deviseで書き直すという選択肢も入れてきています。

エラーコード

例えば、UsersContollerのshowアクションのテストコードを書く場合、ログインが確認できないためshowアクションを実行することができません。

Users #show responds successfully (FAILED - 1) returns a 200 response (FAILED - 2) Failures: 1) Users #show responds successfully Failure/Error: get :show, params: {id: @user.id} URI::InvalidURIError: bad URI(is not URI?): "http://www.example.com:80show" # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rack-test-1.1.0/lib/rack/test.rb:214:in `parse_uri' # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rack-test-1.1.0/lib/rack/test.rb:117:in `request' # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rails-controller-testing-1.0.5/lib/rails/controller/testing/integration.rb:16:in `block (2 levels) in <module:Integration>' # ./spec/requests/users_request_spec.rb:11:in `block (3 levels) in <top (required)>' 2) Users #show returns a 200 response Failure/Error: get :show, params: {id: @user.id} URI::InvalidURIError: bad URI(is not URI?): "http://www.example.com:80show" # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rack-test-1.1.0/lib/rack/test.rb:214:in `parse_uri' # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rack-test-1.1.0/lib/rack/test.rb:117:in `request' # /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/rails-controller-testing-1.0.5/lib/rails/controller/testing/integration.rb:16:in `block (2 levels) in <module:Integration>' # ./spec/requests/users_request_spec.rb:16:in `block (3 levels) in <top (required)>' Finished in 0.05534 seconds (files took 1.03 seconds to load) 2 examples, 2 failures Failed examples: rspec ./spec/requests/users_request_spec.rb:10 # Users #show responds successfully rspec ./spec/requests/users_request_spec.rb:15 # Users #show returns a 200 response

該当のソースコード

users_requrest_spec.rb

require 'rails_helper' RSpec.describe "Users", type: :request do before do @user = User.create(name: "user", email: "user@example.com", password: "password", password_confirmation: "password") end describe "#show" do # 正常なレスポンスか? it "responds successfully" do get :show, params: {id: @user.id} expect(response).to be_success end # 200レスポンスが返ってきているか? it "returns a 200 response" do get :show, params: {id: @user.id} expect(response).to have_http_status "200" end end end

routes.rb

Rails.application.routes.draw do root to: 'toppages#index' resources :restaurants, only: [:index, :show] do resources :posts, only: [:create, :destroy] end get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' post 'guest_login', to: 'guest_sessions#create' get 'signup', to: 'users#new' resources :users, only: [:index, :show, :create] do member do get :likes end end resources :likes, only: [:create, :destroy] resources :posts, only: [:create, :destroy] end

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

Ruby 3.0.0
Ruby on Rails 6.1.3.1
gem 'rspec-rails', '~> 4.0.1'

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問