RSpecの話です。 RSpecは、テストコードがそのまま仕様を記述するドキュメントになる、というのが大きな利点の一つです。 しかし、rspecコマンドに-dオプションを渡して出力されるドキュメントは、必ずしも読める文章になっているとは限りません。 例として、以下のようなCanCanのspecを見てみます。 require 'spec_helper' require "cancan/matchers" describe Ability do context 'an user' do let(:user) { Factory.create(:user) } let(:article) { Factory.create(:article) } let(:own_article) { Factory.create(:article, :user => user) } subject { Abil
Shared example groups let you describe behaviour of types or modules. When declared, a shared group's content is stored. It is only realized in the context of another example group, which provides any context the shared group needs to run. A shared group is included in another group using the it_behaves_like() or it_should_behave_like() methods. require "set" shared_examples_for "a collection" do
Myron Marston » The Plan for RSpec 3の微妙訳です。(翻訳最中なう)だいたい翻訳しました。訳がうんこなのは勘弁(ご指摘いただけると助かります)。 2013/7/23 21:25 id:kakutani さんのツッコミをもとに、誤訳等を修正しました。ありがとうございます(〃・ิ‿・ิ)ゞ RSpec 3に向けての計画 RSpec 2.0は2010年10月にリリースされました。 リリースされてから今までの3年間、後方互換性を保ったままRSpecを継続的に改善してきました。 しかし、RSpecの2.xより古いリリースとの後方互換性を保つために残しているひどいコードの蓄積は限界点に達しています。 RSpec 2.14はRSpec 2の最後のリリースになるでしょう(今後も多分bugfixのリリースすることはあるでしょう)。 我々はRSpec 3に取り掛かっています、
obj.should ... expect(obj).to ... obj.should_not ... expect(obj).not_to ... obj.should =~ // expect(obj).to match(//) [1, 2, 3].should =~ [3, 2, 1] expect([1, 2, 3]).to match_array([3, 2, 1]) obj.should > 3 expect(obj).to be > 3 lambda { ... }.should raise_error expect { ... }.to raise_error # RSpec 2.14.0 or later obj.stub(:foo) allow(obj).to receive(:foo) SomeClass.any_instance.should_receive(:f
* RSpecの構文 見本は、これ http://github.com/mitim/tddbc-lrucache/blob/master/lru_cache_spec.rb ** 慣習 RSpec用のテストとして書くテストコードは、[テスト対象のファイル]_spec.rb という名前でつくる。 ** なにはなくともrequire require 'lru_cache' テスト対象のファイルを読み込ませる。 ちなみに、RSpecの何かをrequireする必要なない。 ** まずは基本 describe do end で、一番外側のブロックを記述する。 通常は、次のようにテスト対象のクラスを宣言しておく。 describe LRUCache do end また、一緒に説明を付けることも可能。 describe LRUCache, "を初期化する場合" do end もちろん、説明だけにすること
私はRSpecでテストをこんな感じで書いてるという良エントリがあったので少し便乗してみます。 まずは上記の記事を。 最終的なrspecについてですが、私の場合は以下のような感じにしてます。 といっても、前回もかいたように試行錯誤の毎日です。 # -*- coding: utf-8 -*- require_relative 'user' describe User do describe "#admin?" do subject { user.admin? } let(:user) { User.new(role: role) } context "管理者の場合" do let(:role) { 'admin' } it { should be_true } end context "一般ユーザの場合" do let(:role) { nil } it { should_not be_tru
MementoWeaver開発記 Vimの環境とRSpecを書き始めるための環境も少しずつだが整備できてきたので、そろそろ本腰を入れてRSpecを書き始めてみる。 RSpecに関する情報収集 RSpecについては殆ど何も知らない状況なので、まずは情報収集から始める。 URL 説明 備考 RSpec.info: home 本家 RDocとRelishAppへの入り口程度 RSpec RSpec-2全体の鳥瞰に向いたプレゼン Kerry Buckley Jan.2011 RSpec Core 2.13 - RSpec Core - RSpec - Relish RSpec-2の公式ドキュメント? RelishApp(RSpec-Core) Documentation for rspec-core (2.13.1) RDocだがREADMEがエントリポイントで判りやすい RDoc RSpec E
RSpecのテストをグルーピングして実行できる#shared_examples_forが便利。 Shared example group - Example groups - RSpec Core - RSpec - Relish これを使えばテストコードが簡潔になるのでテストコードの量を減らすことができる。 require "set" shared_examples_for "a collection" do let(:collection) { described_class.new([7, 2, 4]) } context "initialized with 3 items" do it "says it has three items" do collection.size.should eq(3) end end describe "#include?" do context "
先日からguard + spork + rspecを使った自動テストを行うようになってノリノリでテストをしています。いちいち自分でテストを走らせないでいいので便利ですね!sporkのおかげでテストのロードも速くて快適です。 さて、現在仕事でもゴリゴリとテストを書いているのですが、同じような処理を毎回書くことがあります。例えば、ユーザーの権限が管理者・会員・ゲストなどがある場合、それぞれの権限での動作を検証しなければなりません。でも権限毎に同じ振る舞いのテストを書いていると冗長ですよねぇ…。 会社で@kazuhisa1976と@ore_publicと一緒にThe RSpec Book読書会をやっているのだけれど、そこで学んだ検証方法で、共通処理をまとめることができることを知りました。それが、shared_examples_forとit_behaves_likeです。 使い方ですが、まずはユー
RSpec 2.14 で新記法が導入されてRSpec Mocks 2.14でSpyが導入されていたので整理してみました. stub()とshould_receive()の代わりにallow().to receive()とexpect().to receive()が使えるようになっていたり,Spyが導入されたことでRSpecを用いたテストの記述が柔軟になり,わかりやすく書けるようになりました.今までのRSpec Mocksで使ってきたMock ObjectとTest Spyの違いについても少し整理してみました. Myron Marston » RSpec 2.14 is released! このリリースノートのサンプルコードをいくつか引用して説明します. Rspec Mocksのmessage expectationに新しい記法が追加されました. mailer = double("Maile
2012年04月19日 最近、新人のテストコードを見る機会があり、ユニットテストの書き方について考える機会があった。ユニットテストはテンプレートみたいなものがあるので、それさえ押さえれば、誰でも簡単に書くことができる。 ここでは、その方法について紹介したい。サンプルはRSpecで書くが、その他のユニットテストフレームワークでも、応用ができるとおもう。 はじめにごく単純化すると、テスト対象は状態を持ち、入力を与えると何らかの出力を行なうものである。入力が変われば出力は変化するし、状態が変化すると入力が同じでも出力が変わる(かもしれない)。 ユニットテストは、テスト対象の状態を操作し、与えた入力によって意図通りの出力を得られるかを確認する作業のことをいう。なので、ユニットテストを書くときには、オブジェクトの状態ごとにメソッド単位で入力と出力を確認するようにする。 RSpecの疑似コードで書くと
translations Documentation RSpec is a great tool in the behavior-driven development (BDD) process of writing human readable specifications that direct and validate the development of your application. On the web there are many resources that give complete overview of _what_ you can do with RSpec. But there are fewer resources devoted to how to create a great RSpec test suite. Better Specs tries to
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く