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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1091閲覧

Rspec 条件つきバリデーション

Meitoku

総合スコア44

RSpec

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/12/21 12:02

編集2020/12/21 15:46

現在createアクションの時だけ実行するバリデーションを用意しています
この影響でエラーが発生します

validates :nickname,:email,:password,presence: true, on: :create

####Rspec

FactoryBot.define do factory :user do nickname { "test" } email { "test@gmail.com" } password { "test2020" } password_confirmation { "test2020" } end end

user_spec.rb

user_spec.rb

1 2 before do 3 @user = create(:user) 4 end 5 6 context 'nicknameカラム' do 7 it '未入力でないこと' do 8 @user.nickname = '' 9 is_expected.to eq false 10 end 11 end

###エラー

1) User バリデーションテスト nicknameカラム 未入力でないこと Failure/Error: is_expected.to eq false expected: false got: true (compared using ==) Diff: @@ -1 +1 @@ -false +true # ./spec/models/user_spec.rb:19:in `block (4 levels) in <top (required)>'

createアクションのみではなく、常にバリデーションを実行するとエラーは発生しません
こちらがヒントになるのかと読んでみましたが、エラーは変わりません
よろしくお願いします

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

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

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

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

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

guest

回答1

0

自己解決

require 'rails_helper' RSpec.describe Tweet, type: :model do subject{ build(:user) } it "factory初期値でエラーはない" do # expect(subject).to be_valid is_expected.to be_valid end context 'nicknameカラム' do it '未入力でないこと' do subject.nickname = '' # expect(subject).not_to be_valid is_expected.not_to be_valid end end end

投稿2020/12/22 07:17

編集2021/01/11 04:27
Meitoku

総合スコア44

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問