ローカルでテストを行った際にエラーが起きる。
このバリデーションのエラーを直すにはどうしたら良いでしょうか??
見た感じコードの書き間違えなどは無いような気がします。
#エラーメッセージ
1) Board 本文が65536文字以上の場合 無効であること Failure/Error: expect(board).to be_invalid expected `#<Board id: nil, title: "タイトル4", body: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...", user_id: nil, created_at: nil, updated_at: nil>.invalid?` to return true, got false # ./spec/models/board_spec.rb:66:in `block (3 levels) in <main>' Finished in 11.15 seconds (files took 7.84 seconds to load) 24 examples, 1 failure Failed examples: rspec ./spec/models/board_spec.rb:64 # Board 本文が65536文字以上の場合 無効であること
#該当しそうなコード
boardrb
1class Board < ApplicationRecord 2 validates :title, presence: true, length: { maximum: 255 } 3 validates :body, presence: true, length: { maximum: 65536 } 4 belongs_to :user 5end
schema
1create_table "boards", force: :cascade do |t| 2 t.string "title", null: false 3 t.text "body", null: false 4 t.integer "user_id", null: false 5 t.datetime "created_at", null: false 6 t.datetime "updated_at", null: false 7 t.index ["user_id"], name: "index_boards_on_user_id" 8 end
board.specrb
1require 'rails_helper' 2 3RSpec.describe Board, type: :model do 4 5 context '全てのフィールドが有効な場合' do 6 it '有効であること' do 7 board = build(:board) 8 expect(board).to be_valid 9 end 10 end 11 12 context 'タイトルが存在しない場合' do 13 it '無効であること' do 14 board = build(:board, title: nil) 15 expect(board).to be_invalid 16 expect(board.errors[:title]).to include('を入力してください') 17 end 18 end 19 20 context '本文が存在しない場合' do 21 it '無効であること' do 22 board = build(:board, body: nil) 23 expect(board).to be_invalid 24 expect(board.errors[:body]).to include('を入力してください') 25 end 26 end 27 28 context 'タイトルが255文字以下の場合' do 29 it '有効であること' do 30 board = build(:board, title: 'a' * 255) 31 expect(board).to be_valid 32 end 33 end 34 35 context 'タイトルが256文字以上の場合' do 36 it '無効であること' do 37 board = build(:board, title: 'a' * 256) 38 expect(board).to be_invalid 39 expect(board.errors[:title]).to include('は255文字以内で入力してください') 40 end 41 end 42 43 context '本文が65535文字以内の場合' do 44 it '有効であること' do 45 board = build(:board, body: 'a' * 65535) 46 expect(board).to be_valid 47 end 48 end 49 50 context '本文が65536文字以上の場合' do 51 it '無効であること' do 52 board = build(:board, body: 'a' * 65536) 53 expect(board).to be_invalid 54 expect(board.errors[:body]).to include('は65535文字以内で入力してください') 55 end 56 end 57end
回答1件
あなたの回答
tips
プレビュー