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

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

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

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

Ruby on Rails

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

0回答

739閲覧

railsでのassert_differenceでの結果が想定と違う

moonlight4_6_17

総合スコア12

Ruby

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

Ruby on Rails

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/04/06 15:34

前提・実現したいこと

railsの学習をしている初学者です。
初めて作っているアプリで、テストを書いてみているのですが、テストの結果が想定していたものと違います。
何故なのか分からないので、お分かりになる方いたらご教示いただきたいです。

アプリの機能の一部で、美容院などでよく見るような、カレンダー予約機能を実装している段階です。

カレンダー予約機能では
「xx月xx日 x時〜x時」という単発だけでなく
「xx月xx日~xx日の期間で毎週月曜日」などの曜日指定で予約ができる、または店舗側が予約を開放できるようにしようとしています。

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

テストの意味としては、1件だけ予約枠を開放し、その後に複数選択で予約を開放した際に先の予約開放と重複していた枠があれば、重複を弾いて、それ以外の枠を予約開放する。
という挙動になっているかを確認するものです。

具体的には最初に1件だけ予約枠を開放。
次に、複数選択で13日後までの期間で計4枠選択。
が、先に1枠選択されているものと重複していた分は弾かれ、結果的に3件だけ予約枠が増える。という想定で書きました。

予約枠の増減の判断はAvailableテーブルのデータの増減で判断しようと考えています。

ログに出力されているエラーメッセージ

FAIL ShopReservationFrameTest#test_open_reservation_frame_except_duplicate (2.73s) "Available.count" didn't change by 3. Expected: 6 Actual: 3 test/integration/shop_reservation_frame_test.rb:33:in `block in <class:ShopReservationFrameTest>'

記述しているテストコード

require 'test_helper' class ShopReservationFrameTest < ActionDispatch::IntegrationTest def setup @shop = shops(:sample_shop) end def set_day @day = Date.today.wday @day1 = Date.today.wday+1 end //曜日開放した際に、すでに予約開放している日時は弾きつつも、他日時は開放されているかを確認 test "open reservation frame except duplicate" do get s_res_path(@shop) post s_set_res_path(@shop), params: { rent_date: Date.today, start_time: "10", end_time: "11"} assert_difference 'Available.count', 3 do post s_day_res_path(@shop), params: { rent_start: Date.today, rent_end: Date.today+13, start_time: "10", end_time: "11", day: ["#{@day}", "#{@day1}"]} end end

試したこと

複数選択での14日間の期間などを変更してみたものの Expected: 6 の表示が変わりませんでした。。
まず、Expected: 6 の数字がどこからきているのかが理解できていません。
お分かりになる方いたら、ご教示いただきたいです。

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

rails (5.2.4.5)
minitest (5.14.4)

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問