Ruby: как мне использовать assert_nothing_raised? - PullRequest
4 голосов
/ 30 января 2011
 assert_nothing_raised do
   @board.make_move(0,0,Board::HUMAN)
 end

и документы говорят:

Passes if block does not throw anything.

Example:

 assert_nothing_thrown do
   [1, 2].uniq
 end

мой метод make_move:

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

Я получаю ошибку:

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

Ответы [ 2 ]

4 голосов
/ 30 января 2011

Этот следующий код работает для меня. Это работает для вас?

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)

Я думаю, что вы используете assert_nothing_raised правильно. Попробуйте заменить

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

с чем-то более простым, например

p 'hi'

и посмотри, работает ли это. Также попробуйте закомментировать весь другой код в вашем тесте.

3 голосов
/ 19 сентября 2012

Можно утверждать, что вы никогда не должны использовать assert_nothing_raised, поскольку на самом деле это ничего не проверяет.См .:

http://blog.zenspider.com/blog/2012/01/assert_nothing_tested.html

Я опубликовал здесь некоторые дополнительные мысли:

Почему MiniTest :: Spec не имеет утверждения wont_raise?

...