関連記事
- 勉強会BDD<1>RSpecとCapybaraースタート
- 勉強会BDD<2>RSpecとCapybaraーモデル
- 勉強会BDD<3>RSpecとCapybaraーユーザー認証
- 勉強会BDD<4>RSpecとCapybaraーポイントシステム
BDD(振舞駆動開発:behavior driven development)とは
- プログラム開発手法の一種で、テスト駆動開発(TDD)から派生した物である。(wikipediaより)
- テスト駆動開発でのテストに加えてこれから作成しようとするプログラムに期待される「仕様」を自然言語で併記しながらテストコードを記述する。
- BDDで書いたスペックの実行結果を見てみよう。
- この勉強会で作成するcustomerモデルのスペックである。
$ bin/rspec spec/models/customer_spec.rb
Customer バリデーション
妥当なオブジェクト
family_nameは空であってはならない
family_nameは40文字以内
family_nameに含まれる半角カナは全角カナに交換して受け入れる
given_nameは空であってはならない
given_nameは40文字以内
given_nameに含まれる半角カナは全角カナに交換して受け入れる
family_name_kanaは空であってはならない
family_name_kanaは40文字以内
family_name_kanaに含まれる半角カナは全角カナに交換して受け入れる
given_name_kanaは空であってはならない
given_name_kanaは40文字以内
given_name_kanaに含まれる半角カナは全角カナに交換して受け入れる
family_nameは漢字、ひらがな、カタカナを含んでもよい
family_nameは漢字、ひらがな、カタカナ以外の文字を含まない
given_nameは漢字、ひらがな、カタカナを含んでもよい
given_nameは漢字、ひらがな、カタカナ以外の文字を含まない
family_name_kanaはカタカナを含んでも良い
family_name_kanaはカタカナ以外の文字を含まない
family_name_kanaに含まれるひらがなはカタカナに交換して受け入れる
given_name_kanaはカタカナを含んでも良い
given_name_kanaはカタカナ以外の文字を含まない
given_name_kanaに含まれるひらがなはカタカナに交換して受け入れる
Customer password=
生成されたpassword_digestは60文字
空文字を与えるとpassword_digestはnil
Customer#points
関連付けられたRewardのpointsを合計して返す
Finished in 0.20008 seconds (files took 4.99 seconds to load)
26 examples, 0 failures
- テストでありながら、モデルの仕様(スペック)を自然言語(日本語)で分かりやすく表している。
実習環境
- vagrant上で実習を行う。
- 実習環境の構築については「10分で終わるRailsの開発環境構築」を参考。
アプリケーションの生成
- Railsアプリケーションを作成する。
- Railsアプリケーションを作成する際には、テンプレートを使う。
- テンプレートを使うと、いろんな下準備作業を自動化することができる。
- 自作したテンプレートをgithubに公開したので、ご参考にしていただければと思う。
- https://github.com/devtopia/rails_template/blob/master/install.rb
- データベースとしてmysql(mariadb)を使用する。
- postgresqlを使用したい場合は下記の記事を参考。
rails new oiax -T -B -d mysql -m https://raw.githubusercontent.com/devtopia/rails_template/master/install.rb
トップページの生成
# run server
bin/rails g controller top index
bin/rails s -b 0.0.0.0 -p <ポート番号> # ゲストで起動
# config/routes.rb
root to: 'top#index'
# confirm url
http://192.168.33.10:<ポート番号> # ホストで確認
最初のテスト
# create features directory
mkdir spec/features
# spec/features/top_page_spec.rb
require 'rails_helper'
describe 'トップページ' do
example '挨拶文を表示' do
visit root_path
expect(page).to have_css('p', text: 'Hello World!')
end
end
# , + c
- 「, + c」はvimで実行したいスペックファイルを開いている状態で、コンマとcキーを同時に押すという意味である。
- 「10分で終わるRailsの開発環境構築」を参考にして実習環境を構築したら、上のvim設定を使える。