Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

11,927 views

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

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

×