Search code examples
rubyunit-testingtestunit

Ruby: how do I use assert_nothing_raised?


 assert_nothing_raised do
   @board.make_move(0,0,Board::HUMAN)
 end

and the docs say:

Passes if block does not throw anything.

Example:

 assert_nothing_thrown do
   [1, 2].uniq
 end

my make_move method:

def make_move(x, y, player)
    return false
 end

I get the error:

test_can_make_valid_move_in_the_first_row(BoardTest):
ArgumentError: wrong number of arguments (1 for 2)

Solution

  • This following code works for me. Does it work for you?

    require 'test/unit'
    require 'test/unit/ui/console/testrunner'
    
    class MyTestClass < Test::Unit::TestCase
      def test_something
        assert_nothing_raised do
          p 'hi'
        end
      end
    end
    
    Test::Unit::UI::Console::TestRunner.run(MyTestClass)
    

    I think you are using assert_nothing_raised correctly. Try replacing

    @board.make_move(0,0,Board::HUMAN)
    

    with something more simple, like

    p 'hi'
    

    and see if that works. Also try commenting out all the other code in your test.