New!⇒ GAE/JRubyグループを作ってみました WEB-INF/spec/spec_helper.rb ENV["GEM_HOME"] = File.expand_path(File.join('..', 'gems'), File.dirname(__FILE__)) require "rubygems" require 'test/unit' require "spec" $LOAD_PATH << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__)) $LOAD_PATH << File.expand_path(File.join('..', 'models'), File.dirname(__FILE__)) $LOAD_PATH << File.expand_path(File.join('..'
おはようございます。 うちだです。 みなさんテストコード書いてますか? 私はテストと言われると、どうもやる気がおこりません。 そこでBDD! 今回はBDD初心者の私が、やってみた過程を綴ります。ツッコミ大歓迎 BDDとは? Behavior Driven Development 振舞駆動開発 テスト駆動開発ではテストのためにコードを書く 振舞駆動開発では振舞(仕様)のためにコードを書く 結果的にやる事はほぼ一緒 言い方でモチベーションがかなり変わる スペック!スペック! 各言語のBDDフレームワーク Ruby RSpec .NET NSpec Java JBehave PHP PHPSpec 10ステップでやってみるBDD 1. インストール $ sudo gem install rspec 2. スペックを書く # spec/hello_spec.rb require 'hell
● [テスト] should change に見る UnitTest と RSpec の違い Yugui さんに Proc#should change が便利だと教わった。 Spec::Matchers::Change Spec::Matchers::Change を使うと、一連のコード(proc)実行時に変化したこと(仕様)を簡単に記述することができる。 should change(receiver, message, &block) should change(receiver, message, &block).by(value) should change(receiver, message, &block).from(old).to(new) should_not change(receiver, message, &block)
こんにちは。nayです。TDDと出会ったのは6年以上前ですが、最近、やっと"友達"になることができました。 テストを楽しく積極的に書く心境になれるかどうかは、気だてや価値観や根性の問題ではなく、テクニックの問題であると思います。そこで、テスト嫌いの私がどうやってTDDと友達になれたかを、3つのポイントに絞ってご紹介したいと思います。 1. 関心事だけをテストする 2. DRYにする 3. RSpec 私がテストが嫌いになった理由の一つは、コード変更時にテストが足かせになることです。出るべくして出たエラーはありがたいのですが、関係ない部分で大量にエラーが出ると直すが大変で嫌になってしまいます。また、直そうとしたときに、テストのコードが読みにくいと、難行苦行に直面することになります。最初の2つのポイントは、このようなテストの「丈夫さ」と「読みやすさ」に関わるコツです。 関心事だけをテストする
祖母の白寿のお祝い 先日、満99歳(数えで100歳)になった祖母の白寿のお祝いをやった。 さすがに身体のあちこちに不具合が出てきており、そろそろ本格的に外出も難しくなってきたので祖母と一緒に家族で集まれるのはたぶんこれが最後だろう。 下は0歳から上は99歳までいるので、移動と諸々…
前も書いたように、RSpecを書くときには出来るだけコンパクトに書きたくなります。 しかし、Railsのモデルで操作を行った結果のうち数個の属性(カラム)の内容のみを記述したい場合は it "...." do .... #操作 @model.name.should == "山田太郎" @model.age.should == 32 @model.tel.should == "03-3333-4444" end のように記述が複数行になっていまいます。@model.inspect.should == "..." のように書けば1行で書けますが、属性が多数あるモデルでは期待値の記述が膨大になります ^^; そこで、 ActiveRecord::Base#attributes() メソッドを使い、モデルの値をHashにし、Hash#values_at を使って必要な属性のみ取り出すと。 it "
昨年末から、ある小規模(60画面程度)のRuby on Railsを使ったシステムを開発する際に、RSpecを使ってみましたので、その感想などを どこまで書くか 今回は、Model, Library, Helper に対してのRSpecのみ書きました、従来のRailsのUnitTestに相当する部分のみです。 ただし、コントローラーには絶対にロジックを書かないようにし、ロジックは Model, Library に書くようにしましたのでかなりテストは出来ていると思います。 読みやすい RSpecは従来のユニットテストに比べコンパクトに書けるのでテストが読みやすくなります。理由はいろいろとあると思いますが UniTestのassertは assert(期待値, テスト対象のメソッド)とテスト対象が後ろの方にありますが、 RSpec では テスト対象のメソッド.should == 期待値なので、
Releases, Offers & More Be the first to hear about our newest content, best promotions and upcoming events. Plus get 25% off your next purchase. Newsletter Sign Up Download Accounts Your email address is your account identifier. You can create a password, or just download from the links sent via email. My Orders (Resend order emails) How We're Different Hands-on instructions Solutions to real-worl
RSpecを使ったテストコードを読もう:Railsコードリーディング~scaffoldのその先へ~(2)(1/4 ページ) 優れたプログラマはコードを書くのと同じくらい、コードを読みこなせなくてはならない。優れたコードを読むことで、自身のスキルも上達するのだ(編集部) 第1回「コードリーディングを始めよう」では、Railsアプリケーションの基本であるCRUDのソースコードを読解しました。最低限の基本の動きということで、ディレクトリ構造の説明すら割愛していたので、今回はディレクトリ構造の解説から行います。その後、今回のメインテーマであるテストコードのコードリーディングに入っていきます。 ここで扱うテストコードというのは、Javaの世界でいうとJUnitを使ったテストコードと同じ粒度、つまり、単体テストに近い粒度のテストケースを動くプログラムで表したものになります。Javaの開発者にとってのJ
次の仕事から RSpec を使ってみようかかと思い RSpec on Railsを使ってみました。まずは、勉強にと UnitTest を RSpec on Rails に書き換えてみた。 ドキュメント・参考資料 RSpec-1.1.11: Overview : RSpec ホームページ、英語ですが例が多く実際にSpecを書くのにとても役に立ちます。 Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) : 日本語の解説、長いけど一読、二読しよう! Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編) : 日本語の解説、長いけど一読、二読しよう! WEB+DB PRESS Vol.45 YugiさんのRSpecの記事 : よくまとまっ
rails MockとStubの区別が曖昧で、今ひとつ腑に落ちないまま、WEBのコードを参考に書いていたけど、takihiroさんのブログを見て、やっと自分も腑に落ちた。何が すごい!と思ったかというと、この機能を使うと、モデルとコントローラ、モデルとビュー をそれぞれキレイに分離できそうだ思わされるという点です。RSpec のおかげで「分離するとはこういうことか」ということが分かりました。http://d.hatena.ne.jp/takihiro/20081023/1224762895takahiroさん、GJ!ありがとうございます。とても良いまとめでした。ただ、最後のコードサンプルの中で、 # (A) で作成したモックを返すことを記述している。 Product.should_receive(:find).with("37").and_return(mock_product) # (2
前回の続きです、今回は FunctionTest から RSpec on Rails に書き変えてみました。 シンプルな置き換え まずは、単純に置き換えてみました。 # todos_controller_test.rb require 'test_helper' class TodosControllerTest < ActionController::TestCase def setup @request.session[:login] = true end def test_should_get_index get :index assert_response :success assert_not_nil assigns(:todos) end def test_should_show_todo get :show, :id => todos(:task1).id assert_re
仕事で作っているRailsアプリにCucumberを突っ込んでみました。これは熱い。いやもう十分、お客さんに見せて分かってもらえる気がします。たぶん。もちろん準備は必要だし、受け入れ仕様をすべてお客さんに書いてもらうというのは難しいですけど*1。 とりあえず導入はこちらから。最近はNokogiriが必要です。あとTerminal.appで--no-colorつけずに実行するとTerminal.appがひどいことになるのでiTermお薦めです。 http://github.com/aslakhellesoy/cucumber/wikis/ruby-on-rails 2010-11-10 SEO的に。この記事を書いてから2年、いろんなCucumberの使い方を調べました。そのノウハウを達人出版会にて本にまとめました。よろしければこちらもどうぞ。 http://tatsu-zine.com/bo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く