Ошибка при использовании функции «пропустить» в Test Unit 2.3.0 - PullRequest
5 голосов
/ 03 мая 2011

Я немного озадачен своей проблемой. Я использую ruby ​​1.8.7, рельсы 2.3.2. Я пытаюсь использовать функцию «пропустить» в тестовом модуле 2.3.0. Вот мой тест:

def test_create_reward_program
  omit("Pending")

  reward_program = RewardProgram.find_by_program_name("test_foo")
  assert_equal "test_foo", reward_program.program_name

end

Когда я запускаю 'rake test', я получаю следующее:

1) Error:
test_create_reward_program(AwardControllerTest):
Test::Unit::OmittedError: Pending
    /test/functional/award_controller_test.rb:43:in `test_create_reward_program'


148 tests, 261 assertions, 0 failures, 1 errors, 0 pendings, 0 omissions, 0 notifications

0% пройдено

Я не знаю, почему он помечает это как «ошибку», когда он должен пометить это как «упущение». Кто-нибудь знает?

Я также заметил, что это работает:

def test_create_reward_program
  omit "Pending" do
    reward_program = RewardProgram.find_by_program_name("test_foo")
    assert_equal "test_foo", reward_program.program_name
  end        
end

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

1 Ответ

2 голосов
/ 31 июля 2011

Глядя на код для Test :: Unit 2.3.0, это точно закодированное поведение.Выдает, если не получено блока.

Документация перечисляет источник для omit как:

# File lib/test/unit/omission.rb, line 77
def omit(message=nil, &block)
  message ||= "omitted."
  if block_given?
    omission = Omission.new(name, filter_backtrace(caller), message)
    add_omission(omission)
  else
    raise OmittedError.new(message)
  end
end

Кстати, если вы когда-либо обновите, Rails 3.1.0.rc1, работающий на Ruby 1.9.2p0, который объединяет Minitest, не определяет omit, но добавляет skip.Например:

# test/unit/bird_test.rb
require 'test_helper'

class BirdTest < ActiveSupport::TestCase
  test "creation" do
    bird = Bird.new
    assert_not_nil bird
  end

  test "not implemented" do
    skip
    assert false
  end

end

Используя драгоценный камень turn для красивой печати моего вывода, я получаю:

$ rake test:units
Started

BirdTest:
     PASS creation (0.06s) 
     SKIP not implemented (0.00s) 

Finished in 0.060828 seconds.

2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
...