はじめに RSpecを書くときに、shoulda-matchersというGemを使うと非常に便利でした。 shoulda-matchersとは Shoulda Matchers provides RSpec- and Minitest-compatible one-liners to test common Rails functionality that, if written by hand, would be much longer, more complex, and error-prone. Shoulda Matchersは、手書きで書くと長くて、複雑で、エラーが起きやすいRailsのテストをワンライナーにします。(意訳) ワンライナーって1行ってことでいいのでしょうか... 使用方法 このようなuserモデルに対し、
今までRspecを使うときは、漫然と先人のコードをコピペして、設定をrails_helper.rbに書いたりspec_helper.rbに書いたりしていましたが、「rails_helper.rbにだけ書けばよい」という結論に至りました。 次のStack Overflowの回答を参照。spec_helper.rbは、Railsを読み込まずにRspecだけで何かしらRubyのコードをテストするのに使うらしい。 ruby on rails - How is spec/rails_helper.rb different from spec/spec_helper.rb? Do I need it? - Stack Overflow Rspecが生成するrails_helper.rbのテンプレートの先頭は次のようになってます。まず、spec_helper.rbを読み込み、その後でRails(conf
# インスタンス変数を使う場合 before do @user = User.new(name: 'Taro', email: 'taro@example.com') end it 'is valid' do expect(@user).to be_valid end # letを使う場合 let(:user) { User.new(name: 'Taro', email: 'taro@example.com') } it 'is valid' do expect(user).to be_valid end RSpecを使い慣れている人であれば、おそらくletを使うことが多いと思いますが、初心者の人には違いやメリットがよくわからないと思います。 また、使い慣れている人であっても具体的な違いをぱっと即答できる人は少ないんじゃないでしょうか? ネットを調べていたところ、Stack Overfl
今回は、Ruby on Rails のモデルクラスに対するテストの書き方を解説します。 Customer モデルの仕様 この連載のサンプルアプリケーション Sinope がいったい何を目的とするものなのかまだ決まっていませんが、仮に「顧客(customer)」という概念が必要で、そのために Customer という名前のモデルを用意するものとしましょう。 このモデルの主な仕様は以下の通りです: 姓(family_name)、名(given_name)、姓フリガナ(family_name_kana)、名フリガナ(given_name_kana)が必須入力項目。 それぞれ40文字以内。 姓と名で許される文字の種類は、漢字、ひらがな、カタカナ。 姓フリガナと名フリガナはカタカナのみ。ただし、ひらがなでの入力も受け付けて、カタカナに自動変換する。 いわゆる半角カナは全角カナに自動変換する。 今回は
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第2回です。 今回はRSpecのマッチャについて説明していきます。 第1回と同様、今回も「最低限これだけは」という内容に絞り込んで説明します。 使用頻度の少ないマイナーなマッチャ(注:僕基準)については説明しません。 具体的な項目は以下の通りです。 マッチャとは何か to / not_to / to_not eq be be_xxx be_truthy / be_falsey change + from / to / by 配列 + include raise_error be_within + of これからRSpecを始める人はもちろん、何度かRSpecに触れて「うーん、RSpecってわけわからん」となっている人もこの記事で再入門してみると
はじめに 現在、プログラミングに触れて1ヶ月半ほどになりました。 RSpecで冗長な記述をしたくない。そんなときに使えるのがbeforeです。 今回はbeforeの使い方について自分の理解を深める意味も込めて、説明したいと思います! beforeとは? beforeは とすることでbeforeの後に共通している部分を前もって定義しておくことができます。 実際に使ってみます。 例えばログインしているユーザーがメッセージを送信できるアプリがあったとして、 コントローラのindexアクションでテストをやってみます。 まず一つが it "テストしたいこと" do end で囲まれる手前で記述する方法です。 下の例をみてください ※説明しやすいようににA~Dで記述しました。また、説明に必要のない記述は全て省いてあります。 describe MessagesController do describe
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く