Your SlideShare is downloading. ×
第3回BDD勉強会
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

第3回BDD勉強会

415
views

Published on

Published in: Business, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
415
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. 第3回BDD勉強会
    • 2. フィードバックと改善
    • 3. フィードバックを得る• 重複する数字を扱う方法に問題あり • 暗号が1234の時に推測を1155とすると 採点が+ーとなってしまう
    • 4. 要件を決定• 推測したそれぞれの数値は一度きりの一致のみ有効• 例)暗号が1234で推測が1134の場合   結果は+++になる • 2番目の1は無視される
    • 5. 修正の手順• Featureの修正• RSpecにサンプルを追加• プログラムコードの修正
    • 6. Feature修正Scenarios: matches with duplicates | code | guess | mark | | 1234 | 1155 | + | | 1234 | 5115 | - | | 1134 | 1155 | ++ | | 1134 | 5115 | +- | | 1134 | 5511 | -- | | 1134 | 1115 | ++ | | 1134 | 5111 | +- |
    • 7. RSpecサンプル修正context "with 1 exact match duplicated in guess" do it "returns 0" do pending("refactor number_match_count") marker = Marker.new(1234,1155) marker.number_match_count.should == 0 endend 最初はpendingにしておくことで 新しい失敗が発生しても混同しなくなる
    • 8. RSpec
    • 9. • サブジェクトコード  RSpecを使って振る舞いを指定するコード• エクスペクテーション  →アサーション• サンプルコード  →テスト• サンプルグループ  →テストケース• スペック  →1つ以上のサンプルを含んでいるファイル
    • 10. サンプルグループ サンプルコード describe "A new Account" do サブジェクト it "should have a balance of 0" do account = Account.new コード account.balance.should == Money.new(0, :USD) end end
    • 11. サンプルグループ• describeメソッド• contextメソッド• 対象を説明する場合はdescribe 状態を説明する場合はcontext が一般的?
    • 12. describe User, "with no roles assigned" do ...end=> User with no roles assigneddescribe User, "(ロール未割り当て)" do ...end=> User (ロール未割り当て)
    • 13. module Authentication describe User, "with no roles assigned" do ... endend=> Authentication::User with no roles assigned
    • 14. describe User do describe "with no roles assigned" do it "is not allowed to view protected content" ... end endend=>User with no roles assigned is not allowed to view protected content
    • 15. サンプルコードdescribe Stack do before(:each) do @stack = Stack.new @stack.push :item end describe "#peek" do it "should return the top element" do @stack.peek.should == :item end endend
    • 16. Stack #peek should return the top elementshouldを消すとさらにドキュメントぽくなる Stack #peek return the top element Stack #peek 先頭の要素を返す
    • 17. サンプルを保留扱いにするit "should be read all over"it "should not be mixed with french fries" do pending "cleaning out the fryer" ...endit "should be empty" do pending ("bug report 18976") do [].should be_empty endend
    • 18. フック• before(:each)、before(:all)• after(:each)、after(:all)• around(:each)
    • 19. ヘルパーメソッド describe Thing do def create_thing(options) do thing = Thing.new thing.set_status(options[:status]) thing end it "should do something when ok" do thing = create_thing(:status => "ok") ... end end複数のサンプルグループで共有したい場合はmoduleでくくる
    • 20. サンプルの共有shared_examples_for "any pizza" do it "tastes really good" do @pizza.should taste_really_good end it "is available by the slice" do @pizza.should be available_by_the_slice endend
    • 21. describe "New York style thin crust pizza" do before :each do @pizza = Pizza.new(:region => "New York", :style => "thin crust") end it behaves_like "any pizza" it "has a really great sauce" do @pizza.should have_a_really_great_sauce endend

    ×