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

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

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

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

RSpec

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

Q&A

1回答

581閲覧

request Rspec 一覧画面でのテスト項目

takeke

総合スコア60

Ruby on Rails 5

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

RSpec

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

0グッド

0クリップ

投稿2018/11/29 07:02

あるテーブルの一覧画面についての異常がある場合のspec文がどのようなことを書いたらいいのかわかりません。

Rspecと一緒にfactorybot使っております。
現在のspec文

rails

1require 'rails_helper' 2 3RSpec.describe "User::Offers", type: :request do 4 describe "GET /user_offers" do 5 let!(:offer) { create(:offer) } 6 let(:res) { JSON.parse(response.body).deep_symbolize_keys } 7 context "正常系" do 8 it "は 一覧表示成功" do 9 get '/api/user/offers' 10 expect(res).to eq({ 11 :data => [ 12 { 13 id: offer.id, 14 offer_name: "offer_name", 15 status: "end" 16 } 17 ], 18 errors: [] 19 }) 20 end 21 end 22 context "異常系" do 23 it "は だめ" do 24 get '/api/user/offers' 25 offer.status = "aaa" 26 expect(res).to include(error) 27 end 28 end 29 end 30end

このような形でcontext"異常系"は適当に書いたので勿論通りません。
resにはfactorybotのファイルに書いた値が適用されています。

ここでやりたいのは何かしらの異常がある場合のケースを加えたいのですが、何をしたらいいのか全く分かりません。とりあえずstatusにはvalidatesで特定の値しか入らないようになっているので、offer.statusに許可してない値いれてみたらエラーでるかなと思ったのですが、そもそもモデルの方でやるようなことですよねこれ。
なのでrequestで異常系のテストをやる必要のある項目と、参考にだいたいどのようなコードになるか教えていただけると助かります。以上よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

あるテーブルの一覧画面についての異常がある場合のspec

というのは
「あるテーブルの一覧画面を表示する際のコントローラーのリクエストのテスト」
ということですかね?

「表示内容のテスト」という話であれば、書くべきはE2Eテストやviewの単体テストであって、
RequestSpecの領分ではないです。

RequestSpecにおいて意図しない異常がある場合のテストを書く必要がなく、
異常があればテストが落ちる、というのが普通です。

例えば送信されたフォームの内容が適切ではない場合のテストであっても、それは「異常」ではなく
「フォームの内容が正しくなかった場合の正常なリクエスト」であるテストを書きます。

何を書くべきかは上に述べた通りで、その他のテストファイルの内容の指摘はしません。

投稿2018/11/30 02:12

編集2018/11/30 02:13
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

takeke

2018/12/03 09:15

遅くなってすみません。回答ありがとうございます!「あるテーブルの一覧画面を表示する際のコントローラーのリクエストのテスト」であってます! そうですね。「フォームの内容が正しくなかった場合の正常なリクエスト」という言い方が適切でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問