У меня есть следующий код с соответствующим контрольным примером:
class XXX
attr_accessor :source
def check
begin
raise ArgumentError, "No source specified." \
unless @source.empty? != true
puts "Passed"
rescue
print "Error: ",$!, "\n"
end
end
end
class TestXXX < Test::Unit::TestCase
def setup
@x = XXX.new
end
def test_check
assert_nil(@x.source)
assert_raise(NoMethodError) { @x.check }
end
end
Выполнение тестового примера приведет к следующему результату в assert_raise из-за наличия подпрограммы 'rescue':
Started
.Error: undefined method `empty?' for nil:NilClass
F
Finished in 0.01 seconds.
1) Failure:
test_check:18 exception expected but none was thrown.
1 tests, 2 assertions, 1 failures, 0 errors
Как мне написать тестовый пример для этого сценария, когда я не могу покончить с удалением «спасения» из моего кода?
Комментирование 'спасения' дает мне благоприятный результат.
class XXX
attr_accessor :source
def check
begin
raise ArgumentError, "No source specified." \
unless @source.empty? != true
puts "Passed"
#rescue
# print "Error: ",$!, "\n"
end
end
end
Started
..
Finished in 0.0 seconds.
1 tests, 2 assertions, 0 failures, 0 errors