RSpec

「2013/7/8にRSpec 2.14がリリースされた」の、ファーストインプレッション

RSpec 2.14 is released!: http://myronmars.to/n/dev-blog/2013/07/rspec-2-14-is-released ってことで、ざっとリリースノートを読んで、びびっときたのはこれだ!! Core: Shared example groups are scoped to the context they are defined in Before 2.…

かあさん、RSpec Mock 2.14にTest Spyがあるようで...

RSpec Mock 2.14にはexpectっぽい記述が追加されましたね。http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ # Old foo.should_receive(:bar) foo.should_receive(:bar).with(:buzz) foo.should_receive(:bar).exactly(3).time…

モデルのscopeの、specを記述する

モデルのscopeのspecを記述したいと思ったのですが、「scope rspec」でGoogleで検索したところ、How can i have an rspec test for my default scope: http://stackoverflow.com/questions/6853744/how-can-i-have-an-rspec-test-for-my-default-scope にそ…

テストコード(spec)の修正なしで、テストをn倍速くする

(まったく試してないけど)QSpecを紹介します。 テストが遅いので parallel_tests で高速化しようとしたが、効率わるすぎて腹がたってきたのでより効率的な Qspec をつくった。いくつかの rails プロジェクトでベンチマークしたところ、2倍以上の高速化効果が…

既存のRubyのクラスの、テストコードgeneratorを作成する(2) rspec-kickstarterの紹介

昨日、これからやりたいことを書いたのですが (http://d.hatena.ne.jp/kouji0625/20130605/p1) 、それをある程度実現しているスクリプトがあるとのことなので調べてみました。 A Test Code Generator for RSpec Users: https://speakerdeck.com/seratch/a-te…

既存のRubyのクラスの、テストコードgeneratorを作成する(1)

ちょっと機会があって、プログラムでRubyスクリプトを解析したいと思って調べています。まだまだ調査中なので中途半端な情報になってしまいますが、ご勘弁ください。 Rubyのソースコードを解析するためのソフトウェアとしては、Ruby標準添付のripperと、seat…

RSpecのrequest specで、HTTPS(SSL通信)を実現する

なんのことはない以下の設定をbeforeなどで行うだけですwww 基本的にはwww.example.comはそのままでよく、多くの場合実際のホスト(たとえばhttps://cocktailq.herokuapp.com)に合わせる必要もないはず。 Capybara.default_host = 'https://www.example.com' …

本物のexamplesの共有はこんな感じだろ〜?(RSpecのshared_examplesを定義するファイルの説明です)

Ruby + RSpecでのTDD(BDD)において、shared_examplesやshared_examples_forは最高の武器ですね。 ご存知のようにtest-unitではRubyの言語仕様を駆使してテストコードの共有資産(assert_XXXXなど)を用意することになりますが、RSpecではshared_examplesやshar…

capybara-webkit 0.9.0 on Ubuntu 13.04

必要にせまられて、つまらぬ修正をしてしまったでござる。 commit cf2c7585e5b57c5d605757ef2291594cce537b7b Author: Kouji Takao <kouji@netlab.jp> Date: Wed May 8 23:07:13 2013 +0900 build for Ubuntu 13.04 diff --git a/src/Source.cpp b/src/Source.cpp index 698d4</kouji@netlab.jp>…

SomeClass.any_instance.stub(:some_method).ordered => NG

RSpec MockのSomeClass.any_instance.stub(:some_method)したものには、orderedメソッドがないのですね。知らなかった。 あるモデルをsave!したあとに処理していることをチェックしたかったので、 SomeModel.any_instance.stub(:save!).ordered => 例外発生 …

「RSpecのshouldはもう古い!新しい記法expectを使おう!」に一言申す!!

RSpecのshouldはもう古い!新しい記法expectを使おう!: http://qiita.com/items/d880250adc8cdbe7a32f という最高の記事があります。で、expect {}.to change...はどんなふうに書くんだっけかな?と思ってみてみると、それらしいものがなかったのでメモして…

「失敗したのはおれのせいだから、もうこれ以上はやめてくれ」を実現するrspec --fail-fast (笑

以下のようにしてrspecを実行することで、1つでもspecに失敗した時点でそれ以降のspecを停止できるようです。 $ rspec --fail-fast /path/to/specrake経由だと以下のような感じですよね。 $ rake SPEC='--fail-fast /path/to/spec'あと、よく使うrspecのオプ…

「おい!ちゃんとロールバックしてるか!!」をRSpecで表現する

Railsアプリケーションのコントローラでは、なにかしらの例外が発生するとデータベースの変更をロールバックしますよね。 class ItemsController < ApplicationController def create Item.transaction do ... if エラー条件 raise ActiveRecord::Rollback e…