Introduction
                                    
                                        Welcome
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        How to use the exercise files
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                1. Introducing RSpec
                                    
                                        What is RSpec?
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Why software tests are important
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Thinking in user stories
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Writing good tests
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                2. Installation
                                    
                                        Installing Ruby and RubyGems
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Installing RSpec
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Configuration
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                3. First Steps and Concepts
                                    
                                        Target code and the spec file
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Basic syntax
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Writing specs
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Running specs
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Skipping examples and working with pending examples
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                4. Working with Expectations
                                    
                                        Fundamentals
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        A deprecated modifier: should
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Equivalence matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Truthiness matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Numeric comparison matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Collections
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Other useful matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Predicate matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Observation matchers
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Complex expectations
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                5. Testing Efficiently
                                    
                                        Helper methods
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Hooks: before, after, and around
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Using the let method
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Setting a subject
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Implicitly defined subjects
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Shared examples
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                6. Test Doubles
                                    
                                        What are test doubles?
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Using mocks and stubs
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Partial test doubles
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Message expectations
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Message argument constraints
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Message count constraints
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Spies
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                7. Challenges
                                    
                                        Food-finder application
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Challenge: NumberHelper
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Solution: NumberHelper
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Challenge: StringExtend
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Solution: StringExtend
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Challenge: Restaurant
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Solution: Restaurant
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Challenge: Guide
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Solution: Guide
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                8. RSpec with Ruby on Rails
                                    
                                        Installing
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Generators
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Test database
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Transactional examples
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Model specs
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Helper specs
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Controller specs: Requests
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Controller specs: Responses
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        View specs
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                9. Test-Driven Development (TDD)
                                    
                                        What is TDD?
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        A TDD example: Part one
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        A TDD example: Part two
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        A TDD example: Part three
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        A TDD example: Part four
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Benefits and disadvantages
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                                10. Testing Tools
                                    
                                        Fixtures and factories
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Acceptance testing
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Automatic testing
                                            
                                                ()
                                            
                                            
                                    
                                    
                                        Other tools
                                            
                                                ()
                                            
                                            
                                    
                             
                            
                     
                        
                                
                                    Ex_Files_UsingRSpecTesting.zip
                                    
                                        (540 KB)