Рубиновые юнит-тесты не зависят друг от друга? - PullRequest
0 голосов
/ 10 марта 2012

Я новичок в Ruby и программирую простой тестер палиндрома вместе с юнит-тестами.Странное поведение моих тестов.Если я изменю тест, другой результат теста изменится.

require 'test/unit'
require './string_with_palindrome'

class TestPalindrome < Test::Unit::TestCase
  def test_string_palindrome_positive
    assert "otto".palindrome?
  end

  def test_string_palindrome_negative
    assert ! "foo".palindrome?
  end

  def test_array_palindrome
    assert [3,1,3].palindrome?
  end

  def test_array_palindrome_negative
    assert [2,1,3].palindrome?
  end
end

Протестированный код.Возможно, это неадекватно, но это не должно иметь значения в этом случае.

module Enumerable
  def palindrome?
    self == self.reverse_each {|v| v}
  end
end

class String
  def method_missing(method_id, *args)
    if method_id.to_s == 'palindrome?'
      palindrome?(self)
    else
      super
    end
  end
end

def palindrome?(string)
  prepare(string) == prepare(string).reverse
end

def prepare(string)
  string.downcase.gsub(/\W/,'')
end

В результате тестов возникает одна ошибка, как и следовало ожидать:

1) Ошибка: test_string_palindrome_negative (TestPalindrome) [/Users/prog/Documents/ruby/basics2/TestPalindrome.rb:10]: неверно.

, указывающее, что последний тест не пройден.

Теперь по порядкуиз теста, чтобы пройти, если я изменю последний тест, отменяя результат вызова к палиндрому?, два теста не пройдут:

1) Ошибка: test_array_palindrome_negative (TestPalindrome) [/ Users / prog /Documents / ruby ​​/ basics2 / TestPalindrome.rb: 18]: неверно.

2) Ошибка: test_string_palindrome_negative (TestPalindrome) [/Users/prog/Documents/ruby/basics2/TestPalindrome.rb:10]:это неправда.

Почему это так работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...