<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>Aerialarts &#187; test</title>
	<atom:link href="http://aerial.st/tags/test/feed/" rel="self" type="application/rss+xml" />
	<link>http://aerial.st</link>
	<description></description>
	<lastBuildDate>Mon, 16 Jan 2012 09:56:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://aerial.st/tags/test/feed/" />
		<item>
		<title>RSpec 1.3でカスタムマッチャ</title>
		<link>http://aerial.st/archive/2011/03/04/rspec-13-custom-matcher-move-file/</link>
		<comments>http://aerial.st/archive/2011/03/04/rspec-13-custom-matcher-move-file/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 05:15:42 +0000</pubDate>
		<dc:creator>ikm</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://aerial.st/?p=965</guid>
		<description><![CDATA[ある処理で行われるファイルの移動が適切かどうかテストしたかったので、カスタムマッチャを作ってみた。使用したのはRSpec 1.3.1。 目標のspec lambda { foo }.should move_file(src, dest) チェックする項目 fooメソッドを実行する前にsrcにファイルが存在することをチェック（事前チェック） Foo#barを実行した後にsrcにファイルが存在しないことをチェック（事後チェック） Foo#barを実行した後にdestにファイルが存在することをチェック（事後チェック） srcとdestのMD5値が一致することをチェック（事後チェック） （1は要らないかも？） 実際のコード CustomFileMatchers::MoveFileのmatches?で具体的なテストを実行する。 使い方 describe文のなかでincludeして使う。 ためしにちゃんと判定できているかもspecで書いてみた。 （it文の内容が微妙かもしれない） まとめ 意外と簡単にできたし、specのコードがコンパクトかつそれだけで意味が通じるようになるのでカスタムマッチャはとても便利。 複数のチェック項目が通って一つの意味を成す場合にとても強力。 change.from.toのように条件の追加をメソッドチェインしたければCustomFileMatchers::MoveFileに引数をインスタンス変数に保存するようなメソッド（changeでいうところのfromやto）を追加して、matches?でそれらをチェックすればいいのだと思われる。 参考資料 RSpec をもっと理解したかったので、まとめを作りました &#8211; takihiroの日記 Chapter 17 Extending RSpec その２ &#8211; おもしろWEBサービス開発日記]]></description>
		<wfw:commentRss>http://aerial.st/archive/2011/03/04/rspec-13-custom-matcher-move-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://aerial.st/archive/2011/03/04/rspec-13-custom-matcher-move-file/" />
	</item>
		<item>
		<title>Rails勉強会@東京第58回に行ってきた</title>
		<link>http://aerial.st/archive/2011/01/03/railstoyko-58/</link>
		<comments>http://aerial.st/archive/2011/01/03/railstoyko-58/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 13:42:42 +0000</pubDate>
		<dc:creator>ikm</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[railstokyo]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://aerial.st/?p=882</guid>
		<description><![CDATA[昨年12/18に行われたRails勉強会@東京第58回に行ってきた。 テストの話 「テストの話」で大まかに扱われるけど、細かく見ると次の3つの話題が出てくる。 どうやってテストを書くか うまいテストの仕方・資産としての残し方 テストの文化の浸透のさせ方・継続の仕方 今回は@moroさんをファシリテータとして、「rspecでテストをどう書くか」と「RelishでRspecの新機能を見る」の2点を行った。 話題がバラバラになりがちなので、進行をされた@moroさんはすごいなと思っていたんだけど、ここらへんをうまくカバーできるやり方を見つけたいと思う今日この頃。 で、その時の結論をうけた上で今覚えてる限りの結論。 どうやってテストを書くか （いつか書く） うまいテストの仕方・資産としての残し方 今回は出なかったけど、捨てるテスト、残すテストの話、かなぁ。 開発時の内部実装まで含めた、細かい挙動確認のためのテストで残しておくと後々リファクタリングすることができなくなるので、開発が一段落したらいっそ捨てるのもアリ。 それに対して外側からアプリケーションを叩いてそのINとOUTを見るためのテストは資産として残さなきゃいけない。 テストの文化の浸透のさせ方・継続の仕方 Hudsonを使って継続的にテストの実行とRCovによるカバレッジの集計をさせてそれを共有するのが良いらしい。Rubyではないけどサイボウズでの事例も興味深い。 あとはペアプロでTDDに慣らしていくとか。 あとこれはちょっと別かもしれないけど、「最初にテストを書かなきゃいけないという話だけど、なかなか難しい」という話が出てきた。それに対して@moroさんの話では、「最終的にテストを書いてチェックができればいいので、実装とテストのどちらが先になっても問題はない」ということだった。 自分の場合も、動作の確認がちゃんとできればいいやと思って実装してからテストを書くことは多い。もちろん実装の規模にもよるんだろうけど。 OmniAuthの話 （あとで書く） ActiveSupport 3系のソースを読む （あとで書く）]]></description>
		<wfw:commentRss>http://aerial.st/archive/2011/01/03/railstoyko-58/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://aerial.st/archive/2011/01/03/railstoyko-58/" />
	</item>
		<item>
		<title>Machinist+DatasetでFixture代替</title>
		<link>http://aerial.st/archive/2010/02/20/fixture-replacement/</link>
		<comments>http://aerial.st/archive/2010/02/20/fixture-replacement/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 16:53:45 +0000</pubDate>
		<dc:creator>ikm</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://aerial.st/?p=625</guid>
		<description><![CDATA[概要 Machinistは定義された条件下でテストデータを生成するプラグイン・gem。 DatasetはRubyのコードで記述したテストデータをDBに読み込むプラグイン・gem。 この2つを組み合わせることで（比較的）メンテナンスのしやすいfixtureの代替を構築することが可能になる。 流れとしては、Dataset上でMachinistを呼び出して複数のデータを生成して、それをDBに流し込むという感じ。 メリットは、 条件下でランダムなデータを生成してくれる（「特定のデータをfixture上に作って読み込む」というようなことも可能） リレーション先のデータも適宜生成してくれる（素敵！）。 デメリットは、 データがランダムなので、全条件を必ずカバーするのは苦手＆毎回同じデータが入ってくるとは限らない（回避できるかなぁ） fixtureに依存した書き方をしていると大幅な書き換えが必要かもしれない（レコード数によるテストなど。集計系では難しい…） 最終結果のコードをGithubにあげたので、そちらも参考に。 下準備 Machinist、Dataset、そして適当な文字列のデータを作ってくれるFakerをインストール・設定する。なおテストフレームワークにはRSpec on Railsを用いる。 YAMLに頼らないテストデータの作成を参考にさせていただきました。 Machinist $ cd RAILS_ROOT $ ruby script/plugin install git://github.com/notahat/machinist.git $ vi spec/blueprints.rb # 新規作成/下記参照 $ vi spec/spec_helper.rb # 下記参照 RAILS_ROOT/spec/blueprints.rbに追記： require 'machinist/active_record' require 'sham' RAILS_ROOT/spec/spec_helper.rbに追記： # 冒頭のほうに記述 require File.expand_path(File.dirname(__FILE__) + "/blueprints") # Spec::Runner.configureブロック内に以下を記述 # -> Shamで1度生成したデータはリスト形式でキャッシュされ、 # 以降はbeforeが呼ばれるたびにその先頭から順に取り出すようになる config.before(:all) { Sham.reset(:before_all) } config.before(:each) { Sham.reset(:before_each) } Dataset $ cd RAILS_ROOT $ ruby script/plugin install git://github.com/aiwilliams/dataset.git $ mkdir spec/datasets $ vi spec/spec_helper.rb # 下記参照 [...]]]></description>
		<wfw:commentRss>http://aerial.st/archive/2010/02/20/fixture-replacement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://aerial.st/archive/2010/02/20/fixture-replacement/" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/


Served from: aerial.st @ 2012-02-09 01:59:45 -->
