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.

草野球の出欠確認Webアプリを作ろう! part.5

Last updated at Posted at 2021-04-30

これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。

<<前回の記事

##今回やったこと

###Rspecの導入
ようやく重い腰を上げてRspecを導入する。
以下の記事を参考にした(基本的に記事の通りにした)。
RailsアプリへのRspecとFactory_botの導入手順

Gemfile
group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]   (既存のgem
  gem "rspec-rails"
  gem "factory_bot_rails"
end
$ bundle
$ bundle exec rails generate rspec:install
config/application.rb
config.generators do |g|
  g.test_framework :rspec, 
        view_specs: false, 
        helper_specs: false, 
        routing_specs: false
end
spec/rails_helper.rb
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
(略)
end
spec/rails_helper.rb
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }

rails_helper.rbの記述は私の環境ではコメントアウトを解除すればよかった(最初に生成した時からコメントアウトで書いてあった)。

###Rspecの動作確認

まず参考記事の内容をなぞって、FactoryBotに新規フォルダ・ファイルを作成して定義をする。

$ mkdir ./spec/factories/
$ touch ./spec/factories/users.rb
spec/factories/users.rb
FactoryBot.define do
  factory :user do
    sequence(:name) { |n| "TEST_NAME#{n}"}
    sequence(:email) { |n| "TEST#{n}@example.com"}
    sequence(:password) { |n| "TESTpassword"}
    sequence(:password_confirmation) { |n| "TESTpassword"}
  end
end

FactoryBotのほうを整えたら、テストコードを作成する。

$ mkdir ./spec/models/
$ touch ./spec/models/users_spec.rb
/spec/models/users_spec.rb
require 'rails_helper'

RSpec.describe User, type: :model do
  before do 
    @user = build(:user)
  end

  describe 'バリデーション' do
    it 'nameが空だとNG' do
      @user.name = ''
      expect(@user.valid?).to eq(false)
    end

    it 'emailが空だとNG' do
      @user.email = ''
      expect(@user.valid?).to eq(false)
    end

    it 'password_digestがfalseだとNG' do
      @user.password_confirmation = ''
      expect(@user.valid?).to eq(false)
    end

    it 'nameとemailどちらも値が設定されていれば、OK' do
      expect(@user.valid?).to eq(true)
    end
  end
end

テストコードを実行する。

$ bundle exec rspec spec/models/users_spec.rb

きちんと動作したのでハッピー。

実行結果
....

Finished in 0.07136 seconds (files took 1.74 seconds to load)
4 examples, 0 failures

短いけど今回はここまで。
次回からようやくTDDの真似事ができるようになる(つもりでいますが、挫折する可能性も...)。

次回の記事>>

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?