&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¤Î¼ÂºÝ¤Î»È¤¤Êý¤Ë¤Ä¤¤¤ÆÊÙ¶¯¤·¤Þ¤¹¡£

-Âè°ì²ó¤Ï¤³¤Á¤é
[[Ruby on Rails/Âè12²óÊÙ¶¯²ñ - Rspec³µÍ×]]


**Ìܼ¡ [#wd9223a3]
#contents

**Æü»þ [#xf19520d]
- 2007/10/19(¶â)

**»²²Ã¼Ô [#b239fcd8]



** Æ°²è [#mba5fc42]


*ËÜÊÔ [#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

-1 ¤Ä¤Î¥¯¥é¥¹ (¥â¥¸¥å¡¼¥ë) ¤ËÂФ·¤Æɬ¤º 1 ¤Ä¤Î¥¹¥Ú¥Ã¥¯¥Õ¥¡¥¤¥ë¤È¤¤¤¦¥ë¡¼¥ë¤Ï¤Ê¤¤
-spec(1)-(n)Behavior(1)-(n)Example(1)-(n)Expectation

***Behavior [#wc0facb9]
-¿¶Éñ
-Test::Unit ¤Ë¤ª¤±¤ë¥Õ¥£¥¯¥¹¥Á¥ã (¥Æ¥¹¥È¥¯¥é¥¹) ¤ËÁêÅö¤¹¤ë
-Ê£¿ô¤ÎExample¤ò´Þ¤à
-°Ê²¼¤Î¤è¤¦¤Ê½ñ¼°
 describe Array "when empty" do #Array¥¯¥é¥¹¤¬empty¤Î¤È¤­¤Î¿¶Éñ
   ..
 end

***Example [#p3aadf0b]
-¼Â¹Ô²Äǽ¤Ê¥µ¥ó¥×¥ë
-Test::Unit ¤Ë¤ª¤±¤ë¥Æ¥¹¥È¥á¥½¥Ã¥É¤ËÁêÅö¤¹¤ë
-Ê£¿ô¤ÎExpectation¤ò´Þ¤à
-°Ê²¼¤Î¤è¤¦¤Ê½ñ¼°
  it "should be empty" do #¶õ¤Ç¤¢¤ë¤³¤È
    ...
  end
-test¤Îset_up¡¢tera_down¤ËÁêÅö¤¹¤ëbefore / after ¤È¤¤¤¦¥á¥½¥Ã¥É¤¬¤¢¤ë¡£
 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
**¥Æ¥¹¥È¤È¤ÎÈæ³Ó [#yace69dd]

**¤Þ¤È¤á [#n529f97b]
-

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¥¢¡¼¥¯¥¦¥§¥Ö¤Î¥µ¡¼¥Ó¥¹¤ä¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¤³¤Á¤é