Introduction

I am learning myself Ruby not because I need to but just because I can. In [my first post][1] I showed you my setup that I will be using for now. And I got hello world working.

Now I want to write a test to see that my output is what it is supposed to be.

The problems

In encountered a few problems when trying to make my test work. First was how to capture the stdoutput. This was fairly easy, namely Google. I found this [thinkingdigitaly][2] post very useful.

And I used this little piece of code to make it work for me.

require 'stringio'

module Kernel

  def capture_stdout
    out = StringIO.new
    $stdout = out
    yield
    return out
  ensure
    $stdout = STDOUT
  end

end```
Which made me look for a way to include this file in my tests because I wanted to keep this separate from my testcode.
  
It seems that you need to use require_relative “nameoffile” to do that.

I then needed a function in my helloworld code so I could invoke it and test it.

So this became.

```ruby
#!/usr/bin/ruby
def helloworld
puts "Hello world advanced"
end```
def seems to be the way to go.

## The test

And now it is time to see test. I used TestUnit for this and not rspec. 

```ruby
require "test/unit"
require_relative "module"
require_relative "helloworld"

class MyTest < Test::Unit::TestCase

    def test_if_hello_word_advanced_is_put_on_stdout
    out = capture_stdout do
      helloworld
    end

    assert_equal "Hello world advancedn", out.string
  end
end```
Tests just begin with the word test and the class inherits from a bunch of stuff. and the assert_equal seems to be obvious. 

When I run the above I get this.

<div class="image_block">
  <a href="https://lessthandot.z19.web.core.windows.net/wp-content/uploads/users/chrissie1/ruby/rubymine5.png?mtime=1311412915"><img alt="" src="https://lessthandot.z19.web.core.windows.net/wp-content/uploads/users/chrissie1/ruby/rubymine5.png?mtime=1311412915" width="1035" height="762" /></a>
</div>

I have to figure out this gems thing pretty soon me thinks. And then get rubymine to play nice with the test framework.

## Conclusion

Google to the rescue. But in the end it went pretty smoothly. At least I got my first test running. Test are very important in any language so they are the best place to start learning.

 [1]: /index.php/All/
 [2]: http://thinkingdigitally.com/archive/capturing-output-from-puts-in-ruby/