Star Development Corporation
"Every man and every woman is a star" -- Liber AL vel Legis 1.3
Chapter 1: The Basics - Part 2
Test-Driven Development
From here, we'll add a test. Notice that we have modified the method hello to give a return value that will make sense in the test. The return value from a puts in this situation is nil, which doesn't help in testing the code. The lesson here is to write the tests first, which we will do in future lessons.
HelloTest.rb
#!/usr/bin/env ruby -w
require 'test/unit'
class Greetings
def hello(name)
a = 'Hello, ' + name + '!'
puts a
return a
end
end
g = Greetings.new
g.hello('world')
class TestHello < Test::Unit::TestCase
def test_hello
name = 'world'
assert_equal("Hello, world!", Greetings.new.hello(name))
end
end
The results are (your Finished in may vary):
=> Hello, world! => . => Finished in 0.015 seconds. => => 1 tests, 1 assertions, 0 failures, 0 errorsSuccess!
Refactoring
What we need to do next is refactor the code into the main program and a test programhello-main.rb
#!/usr/bin/env ruby -w
class Greetings
def hello(name)
'Hello, ' + name + '!'
end
end
def main
g = Greetings.new
puts g.hello('world')
end
main
#!/usr/bin/env ruby -w
require 'test/unit'
require 'hello-main'
class TestHello < Test::Unit::TestCase
def test_hello
name = 'world'
assert_equal("Hello, world!", Greetings.new.hello(name))
end
end
Hello, world!
Now, enter ./hello-test-02.rb The results are (your Finished in may vary):
Started . Finished in 0.0 seconds. 1 tests, 1 assertions, 0 failures, 0 errorsAnd now each program does exactly what it is supposed to do. On to Chapter 2.