0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RSpecのテストにおいて期待されるエラーが出力されなかった話

Last updated at Posted at 2020-11-19

##はじめに
画像とテキストを投稿するRailsアプリケーションで、RSpecによるテストを行っていた。
アプリケーションの設計ではテキストがない場合はツイート(投稿)が出来ないようになっている。

##テスト内容

テキストなしの投稿は保存できない、という内容のテストで以下のコードを実行した。

spec/models/tweet_spec.rb
it 'テキストがないとツイートは保存できない' do
  tweet = Tweet.new(text: "",image: "https://i.imgur.com/GL7igry.png")
  tweet.valid?
  expect(@tweet.errors.full_messages).to include("Text can't be blank")
end

ところが、テキスト欄を空白にしてもtweet.valid?はtrueを返しており、"Text can't be blank"のエラーが出力されなかった。

[1] pry(#<RSpec::ExampleGroups::Tweet::Nested::Nested_2>)> @tweet.valid?
=> true
[2] pry(#<RSpec::ExampleGroups::Tweet::Nested::Nested_2>)> @tweet.errors.full_messages
=> []

ここで@tweet.valid?がtrueになるということは、validationがうまく機能していない可能性があるので、該当するmodelを見直してみた。

##解決法
validationの記述がなかったため、エラーが発生していなかった。
以下を書き足してもう一度テストを行ったところ、無事"Text can't be blank"のエラーが出力された。

app/models/tweet.rb
  validates :text, presence: true
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?