15. Make it pass: def add(i,j) return 2 end Output: Loaded suite TddExample Started . Finished in 0.000455 seconds. 1 tests, 1 assertions, 0 failures, 0 errors
16. Waait!! Why isn’t it just: def add(i,j) return i+j end
18. Write another failing test: def test_add_1_plus_2 assert_equal 3, add(1,2) End Loaded suite TddExample Started F Finished in 0.042739 seconds. 1) Failure: test_add_1_plus_1(TddExample) [tdd.rb:42]: <3> expected but was <2>. 1 tests, 1 assertions, 1 failures, 0 errors
19. Make it pass: def add(i,j) return i+j End Loaded suite TddExample Started .. Finished in 0.000462 seconds. 2 tests, 2 assertions, 0 failures, 0 errors
24. Any number of arguments? First add a test.. def test_adding_three_arguments assert_equal 4, add(1,2,1) End Make it pass!! Add another test!! def test_adding_four_arguments assert_equal 8, add(1,2,1,4) end
25. Refactor For the general solution: def add(*args) return args.inject(0){|sum,n| sum + n} End Loaded suite TddExample Started .... Finished in 0.000941 seconds. 4 tests, 4 assertions, 0 failures, 0 errors
27. Example: class PersonDAO def initialize(user, password) @data_source = Database.connect(user, password) end end VS class PersonDAO def initialize(data_source) @data_source = data_source end end
30. Start off with a test def setup @person = FamilGuyDao.new end def test_return_full_name_is_reginald_von_griffen assert_equal "Reginald Von-Griffin", @person.full_name end #But how do we make it vary? Pass in the name? Pull it from somewhere #Lets assume there is some Griffin Family Tree in the sky def test_return_full_name_is_stewie_griffin assert_equal "Stewie Griffin", @person.full_name end