0
Mockfight!
          FlexMock vs. Mocha
          Patrick Reagan
          patrick@viget.com
          Director, Applicati...
Mockfight! FlexMock vs. Mocha                                                      2




What are Mocks?


          “Mock...
Mockfight! FlexMock vs. Mocha                                                      3




When to Mock?

Use mocks when you...
Mockfight! FlexMock vs. Mocha                                                      4




Control Behavior

What does this ...
Mockfight! FlexMock vs. Mocha                                                                      5




Control Behavior
...
Mockfight! FlexMock vs. Mocha                                                      6




Remove Dependencies

Example: ret...
Mockfight! FlexMock vs. Mocha                                                      7




Mockfight!

Expanded example:
• C...
Mockfight! FlexMock vs. Mocha                                                      8




Round 1

Test scenario when URI#p...
Mockfight! FlexMock vs. Mocha                                                      9




Round 1: Results

FlexMock




Mo...
Mockfight! FlexMock vs. Mocha                                                      10




Round 2

Check for a valid respo...
Mockfight! FlexMock vs. Mocha                                                      11




Round 2: Results

FlexMock




M...
Mockfight! FlexMock vs. Mocha                                                      12




Round 3

Check for response type...
Mockfight! FlexMock vs. Mocha                                                      13




Round 3: Results

FlexMock




M...
Mockfight! FlexMock vs. Mocha                                                      14




Round 4

Follow an HTTP redirect...
Mockfight! FlexMock vs. Mocha                                                      15




Round 4: Results

FlexMock




V...
Mockfight! FlexMock vs. Mocha                                                      16




Round 4: Results

Mocha




Vige...
Mockfight! FlexMock vs. Mocha                                                      17




Round 5

Handling maximum number...
Mockfight! FlexMock vs. Mocha                                                      18




Round 5: Results

FlexMock




V...
Mockfight! FlexMock vs. Mocha                                                      19




Round 5: Results

Mocha




Vige...
Mockfight! FlexMock vs. Mocha                                                      20




Bonus Round

Mocking ActiveRecor...
Mockfight! FlexMock vs. Mocha                                                      21




Bonus Round: Results

FlexMock

...
Mockfight! FlexMock vs. Mocha                                                      22




But Wait, There’s More

Mocha ha...
Mockfight! FlexMock vs. Mocha                                                      23




Conclusion


• Newest versions o...
Mockfight! FlexMock vs. Mocha                                                         24




It’s a Tie!




             ...
Mockfight! FlexMock vs. Mocha                                                      25




Questions?




                 ...
Mockfight! FlexMock vs. Mocha                                                      26




Additional Information

FlexMock...
Upcoming SlideShare
Loading in...5
×

Mockfight! FlexMock vs. Mocha

10,676

Published on

Patrick Reagan runs through a quick demo using both FlexMock and Mocha to highlight the differences (and similarities!) between the two libraries.

Published in: Business, Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,676
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
175
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "Mockfight! FlexMock vs. Mocha"

  1. 1. Mockfight! FlexMock vs. Mocha Patrick Reagan patrick@viget.com Director, Application Development Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  2. 2. Mockfight! FlexMock vs. Mocha 2 What are Mocks? “Mock objects are simulated objects that mimic the behavior of real objects in controlled ways” - Wikipedia Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  3. 3. Mockfight! FlexMock vs. Mocha 3 When to Mock? Use mocks when you want to: • Control the behavior of internal method calls • Remove dependence on external systems • Improve test performance Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  4. 4. Mockfight! FlexMock vs. Mocha 4 Control Behavior What does this return? Need to maintain consistency between calls Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  5. 5. Mockfight! FlexMock vs. Mocha 5 Control Behavior How do we test? Magic happens here Stub the call to Die#rand (using Mocha) Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  6. 6. Mockfight! FlexMock vs. Mocha 6 Remove Dependencies Example: retrieve response data via HTTP To test this, we need to mock: • Call to URI#parse • Calls to Net::HTTP#new and Net::HTTP#head Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  7. 7. Mockfight! FlexMock vs. Mocha 7 Mockfight! Expanded example: • Create class method to check for resource • Handle errors and redirects • Iteratively develop functionality while testing • Examine the differences between libraries Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  8. 8. Mockfight! FlexMock vs. Mocha 8 Round 1 Test scenario when URI#parse raises exception Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  9. 9. Mockfight! FlexMock vs. Mocha 9 Round 1: Results FlexMock Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  10. 10. Mockfight! FlexMock vs. Mocha 10 Round 2 Check for a valid response Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  11. 11. Mockfight! FlexMock vs. Mocha 11 Round 2: Results FlexMock Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  12. 12. Mockfight! FlexMock vs. Mocha 12 Round 3 Check for response type instead of status code * Our previous tests for response status code are now invalid Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  13. 13. Mockfight! FlexMock vs. Mocha 13 Round 3: Results FlexMock Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  14. 14. Mockfight! FlexMock vs. Mocha 14 Round 4 Follow an HTTP redirect response Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  15. 15. Mockfight! FlexMock vs. Mocha 15 Round 4: Results FlexMock Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  16. 16. Mockfight! FlexMock vs. Mocha 16 Round 4: Results Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  17. 17. Mockfight! FlexMock vs. Mocha 17 Round 5 Handling maximum number of redirects Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  18. 18. Mockfight! FlexMock vs. Mocha 18 Round 5: Results FlexMock Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  19. 19. Mockfight! FlexMock vs. Mocha 19 Round 5: Results Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  20. 20. Mockfight! FlexMock vs. Mocha 20 Bonus Round Mocking ActiveRecord#find in controllers Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  21. 21. Mockfight! FlexMock vs. Mocha 21 Bonus Round: Results FlexMock Mocha Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  22. 22. Mockfight! FlexMock vs. Mocha 22 But Wait, There’s More Mocha has parameter matchers (in SVN) You can write code like this: Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  23. 23. Mockfight! FlexMock vs. Mocha 23 Conclusion • Newest versions of gems contain similar features • FlexMock can accept blocks for further mocking • Personal preference of syntax is the deciding factor Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  24. 24. Mockfight! FlexMock vs. Mocha 24 It’s a Tie! Ultimately, two great libraries - just pick one Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  25. 25. Mockfight! FlexMock vs. Mocha 25 Questions? ??? Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  26. 26. Mockfight! FlexMock vs. Mocha 26 Additional Information FlexMock (Jim Weirich) http://www.onestepback.org/software/flexmock Mocha (James Mead) http://mocha.rubyforge.org http://www.slideshare.net/viget Viget Labs we build web business July 18, 2007 © Copyright 2007 Viget Labs, LLC – www.viget.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×