&pgid;
**¤³¤Î¥Ú¡¼¥¸¤Ï¡© [#n3541592]
²¼µ¤Î¥Í¥¿¤ò¸µ¤ËRspec¤Ë¤Ä¤¤¤ÆÊÙ¶¯¤·¤Æ¤ß¤ë¥Ú¡¼¥¸¤Ç¤¹¡£
-Rubyist Magazine - ¥¹¤Ï¥¹¥Ú¥Ã¥¯¤Î¥¹ ¡ÚÂè 1 ²ó¡Û RSpec ¤Î³µÍפȡ¢RSpec on Rails (¥â¥Ç¥ëÊÔ)
http://jp.rubyist.net/magazine/?0021-Rspec
-File: TUTORIAL.ja
http://kakutani.com/trans/rspec/TUTORIAL_ja.html
º£²ó¤ÏÂ裲²ó¤È¤¤¤¦¤³¤È¤ÇÁ°²ó¤Î³¤¤Ç¤¹¡£
Á°²ó¤ÏRspec¤Î³µÍפˤĤ¤¤Æ¤·¤«ÀâÌÀ¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¤¬¡¢º£²ó¤ÏRspec¤Î¼ÂºÝ¤Î»È¤¤Êý¤Ë¤Ä¤¤¤ÆÊÙ¶¯¤·¤Æ¤¤¤¤Þ¤¹¡£
-Âè°ì²ó¤Ï¤³¤Á¤é
[[Ruby on Rails/Âè12²óÊÙ¶¯²ñ - Rspec³µÍ×]]
#blikimore
**Ìܼ¡ [#wd9223a3]
#contents
**Æü»þ [#xf19520d]
- 2007/10/19(¶â)
**»²²Ã¼Ô [#b239fcd8]
-[[»ÖÅÄ]]¤µ¤ó
-[[Ãݼ]]¤µ¤ó
-[[¿ÊÃÏ]]¤µ¤ó
-[[¾®¾Â]]
** Æ°²è [#mba5fc42]
http://www.screencast.com/t/dq7IJeeo6
*ËÜÊÔ [#v60241bf]
**¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ß¤ë [#rd18e79b]
http://jp.rubyist.net/magazine/?0021-Rspec#l18
-¥¤¥ó¥¹¥È¡¼¥ë
$ su
# gem install rspec
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rspec-1.0.8
Installing ri documentation for rspec-1.0.8...
Installing RDoc documentation for rspec-1.0.8...
-¤Á¤ã¤ó¤È¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¤«¥Á¥§¥Ã¥¯
$spec -v
RSpec-1.0.8 (r2338) - BDD for Ruby
http://rspec.rubyforge.org/
¤Á¤ã¤ó¤È¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Æ¤¿¡£
**¤È¤ê¤¢¤¨¤º»È¤Ã¤Æ¤ß¤ë [#kc561a22]
http://jp.rubyist.net/magazine/?0021-Rspec#l19
-¾åµ¥Ú¡¼¥¸¤Ç¥µ¥ó¥×¥ë¤È¤·¤Æ¤¢¤ëArray¥¯¥é¥¹¤Ø¤Î¿¶Éñ¤Îµ½Ò¤ò¤·¤Æ¤ß¤ë¡£
$emacs test/rspec/array_spec.rb
¤Ç°Ê²¼¤òŽ¤êÉÕ¤±
describe Array, "when empty" do
before do
@empty_array = []
end
it "should be empty" do
@empty_array.should be_empty
end
it "should size 0" do
@empty_array.size.should == 0
end
after do
@empty_array = nil
end
end
-¤Ç¼Â¹Ô
$ spec array_spec.rb
..
Finished in 0.047857 seconds
2 examples, 0 failures
¤¦¡¼¤ó¡¢¥µ¥ó¥×¥ëÄ̤ꡣ
-¿§¤ò¤Ä¤±¤ë
$ spec -c test/rspec/array_spec.rb
-»ÅÍͽñ¤Ã¤Ý¤¯½ÐÎϤ¹¤ë
$ spec -fs test/rspec/array_spec.rb
Array when empty
- should be empty
- should size 0
Finished in 0.007583 seconds
2 examples, 0 failures
**µ½Ò¥ë¡¼¥ë¤Ë¤Ä¤¤¤Æ [#a7f29185]
http://jp.rubyist.net/magazine/?0021-Rspec#l26
***¹½Â¤ [#p97f27ff]
|Rspec¤Î¹½À®Í×ÁÇ|µ½ÒÎã|testUnit¤ÇÂбþ¤¹¤ë¤â¤Î|h
|spec¥Õ¥¡¥¤¥ë|array_rspec.rb|Test¥Õ¥¡¥¤¥ë|
|Behavior|describe Array, "when empty" do end|test¥¯¥é¥¹|
|Example| it "should be empty" do end|test¥±¡¼¥¹|
|Expectation|@empty_array.should be_empty|assertʸ|
-¾åµ¤ÎÂбþ¤ò¼ÂºÝ¤Î¥µ¥ó¥×¥ë¤Ç³Îǧ¤¹¤ë¡£
$emacs test/rspec/array_spec.rb #spec¥Õ¥¡¥¤¥ë
----
describe Array, "when empty" do #Behavior
before do
@empty_array = []
end
it "should be empty" do #Example
@empty_array.should be_empty #Expectation
end
it "should size 0" do #Example
@empty_array.size.should == 0 #Expectation
end
after do
@empty_array = nil
end
end
-¾åµ¤Î³ÆÍ×ÁǤδØÏ¢¿Þ
--spec(1)-(n)Behavior(1)-(n)Example(1)-(n)Expectation
-¥¹¥Ú¥Ã¥¯¥Õ¥¡¥¤¥ë¤È¥Æ¥¹¥ÈÂÐ¾Ý¤Î¥×¥í¥°¥é¥à¤Î´ØÏ¢
--1 ¤Ä¤Î¥¯¥é¥¹ (¥â¥¸¥å¡¼¥ë) ¤ËÂФ·¤Æɬ¤º 1 ¤Ä¤Î¥¹¥Ú¥Ã¥¯¥Õ¥¡¥¤¥ë¤È¤¤¤¦¥ë¡¼¥ë¤Ï¤Ê¤¤
--°ì¤Ä¤Î¥¯¥é¥¹¤ËÂФ·¤ÆÊ£¿ô¤Î¥¹¥Ú¥Ã¥¯¥Õ¥¡¥¤¥ë¤Ç¿¶Éñ¤òµ½Ò¤·¤Æ¤â¤è¤¤¡£
***Behavior [#wc0facb9]
-¿¶Éñ
-Test::Unit ¤Ë¤ª¤±¤ë¥Õ¥£¥¯¥¹¥Á¥ã (¥Æ¥¹¥È¥¯¥é¥¹) ¤ËÁêÅö¤¹¤ë
-Ê£¿ô¤ÎExample¤ò´Þ¤à
-°Ê²¼¤Î¤è¤¦¤Ê½ñ¼°
describe Array "when empty" do #Array¥¯¥é¥¹¤¬empty¤Î¤È¤¤Î¿¶Éñ
..
end
***Example [#p3aadf0b]
-¼Â¹Ô²Äǽ¤Ê¥µ¥ó¥×¥ë
-Test::Unit ¤Ë¤ª¤±¤ë¥Æ¥¹¥È¥á¥½¥Ã¥É¤ËÁêÅö¤¹¤ë
-Ê£¿ô¤ÎExpectation¤ò´Þ¤à
-°Ê²¼¤Î¤è¤¦¤Ê½ñ¼°
it "should be empty" do #¶õ¤Ç¤¢¤ë¤³¤È
...
end
-Example¤È¤Ï°ã¤¦¤¬¡¢¥Æ¥¹¥È¥æ¥Ë¥Ã¥È¤Ë¤ª¤±¤ëset_up / tera_down¤ËÁêÅö¤¹¤ëbefore / after ¤È¤¤¤¦¥á¥½¥Ã¥É¤¬Rspec¤Ë¤Ï¤¢¤ë¡£
before do
¿¶
end
after do
end
--before(:all),after(:all)¤È¤¤¤¦¤â¤Î¤â¤¢¤ë¡£¤³¤ì¤ÏExample¤Î¤¿¤Ó¤Ë¤Ç¤Ï¤Ê¤¯¡¢Behaviour¤ò¼Â¹Ô¤¹¤ëºÇ½é¤Î°ì²ó¤Î¤ß¼Â¹Ô¤µ¤ì¤ë¡£
***Expectation [#fe5cad99]
-¥×¥í¥°¥é¥à¤Ë´üÂÔ¤¹¤ëÆ°ºî¤äÆ°ºî·ë²Ì
-Test::Unit ¤Ë¤ª¤±¤ëassertʸ¤ËÁêÅö¤¹¤ë
-°Ê²¼¤Î¤è¤¦¤Ê½ñ¼°
result.should == 37 #·ë²Ì¤Ï37¤È¤Ê¤ë
¢°ìÈ̲½
actual.should matcher(expected)
-matcher¤ÎÉôʬ¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë
-¥Þ¥Ã¥Á¥ã
|¥Þ¥Ã¥Á¥ã̾|ÆâÍÆ|h
|>|~±é»»»Ò¤Î¥Þ¥Ã¥Á¥ã|
|<||
|<=||
|==||
|===||
|=~||
|>||
|>=||
|>|~±é»»»Ò°Ê³°¤Î¥Ó¥ë¥È¥¤¥ó¤Î¥Þ¥Ã¥Á¥ã|
|be_close(expected, delta)|¡Ö(actual - expected).abs < delta¡×¤¬À®Î©¤¹¤ë¤³¤È¤ò´üÂÔ¤·¤Þ¤¹|
|change|actual ¤¬ Proc ¤Ç¤¢¤ë¾ì¹ç¤ËÍøÍѤǤ¤Þ¤¹¡£change ¤Î°ú¿ô¤ò»È¤Ã¤Æ¡¢´üÂÔ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¾õÂÖ¤ÎÊѲ½¤òµ½Ò¤·¤Þ¤¹¡£¸å¤Û¤ÉÀâÌÀ¤·¤Þ¤¹¤¬¡¢RDoc¤Îµ½Ò¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤|
|eql(expected)||
|equal(expected)||
|have(number).items|Í×ÁÇ¿ô¤¬ number ¤Ç¤¢¤ë¤³¤È¤ò´üÂÔ¤·¤Þ¤¹|
|have_at_least(number).items||
|have_at_most(number).items||
|have_exactly||
|include(expected)|actual ¤¬ String ¤« Array ¤Ç¤¢¤ë¾ì¹ç¤Ë¡¢actual.include?(expected) ¤ò´üÂÔ¤·¤Þ¤¹|
|match(regexp)|actial =~ regexp ¤Ç¤¢¤ë¤³¤È¤ò´üÂÔ¤·¤Þ¤¹|
|raise_error(expected)||
|respond_to(*names)||
|satisfy{}||
|throw_symbol(:expected=nil)||
|>|~¤½¤Î¾¤Î¥Þ¥Ã¥Á¥ã|
|be_xxx|should be_empty,be_instance_of,be_kind_ofl¤Ê¤É¡£(be_a_kind_of¤Ê¤É´§»ì¤ò¤Ä¤±¤ë¤³¤È¤â¤Ç¤¤ë)|
|be_true||
|be_false||
|have_xxx||
-¾¤Ë¤â¥æ¡¼¥¶¡¼¼«¿È¤Ç¥Þ¥Ã¥Á¥ã¤òÄêµÁ¤¹¤ë¤³¤È¤â¤Ç¤¤ë
***Æüì¤ÊExpectation [#x3d69d9b]
-vilolated
violated "always fail!" # ɬ¤º¼Â¹Ô¤Ë¼ºÇÔ¤¹¤ë
-pending
pending("for obvious reason") do
true.should be_false # ÊÝα¤·¤¿¤¤É¾²Á(̤¼ÂÁõ¤Ê¤É)
end
**¤Þ¤È¤á [#n529f97b]
-¥¤¥ó¥¹¥È¡¼¥ë¤Î»ÅÊý¤¬Ê¬¤«¤Ã¤¿¡ª
-µ½Ò¤Î»ÅÊý¤¬Ê¬¤«¤Ã¤¿¡ª
-ÍøÊØÀ¤Ï¤Þ¤À¤è¤¯Ê¬¤«¤é¤Ê¤¤¡ª
#blikifooter(¾®¾Â)
tag: [[Ruby on Rails>tag/Ruby on Rails]], [[ÊÙ¶¯²ñ>tag/ÊÙ¶¯²ñ]],[[¥Æ¥¹¥È>tag/¥Æ¥¹¥È]]