# Test::Unit assert\_throws

**URL:** <https://www.ruby-forum.com/t/test-unit-assert-throws/51493>\
**Category:** Ruby\
**Created:** [January 1, 2006, 6:45pm UTC](https://www.ruby-forum.com/t/test-unit-assert-throws/51493 "2006-01-01T18:45:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [January 1, 2006, 6:45pm UTC](https://www.ruby-forum.com/t/test-unit-assert-throws/51493/1 "2006-01-01T18:45:30Z")

</div>

Hi,

Any good examples out there (I couldn’t find any) of assert\_throws? I  
would love to know also why its first argument is a symbol…

Thanks  
Mike

---

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [January 1, 2006, 6:51pm UTC](https://www.ruby-forum.com/t/test-unit-assert-throws/51493/2 "2006-01-01T18:51:30Z")

</div>

On Jan 1, 2006, at 11:42 AM, asplake wrote:

> Hi,
> 
> Any good examples out there (I couldn’t find any) of assert\_throws? I  
> would love to know also why its first argument is a symbol…

I’m guessing you might be looking for Exception handling assertions.  
If so, you want:

assert\_raised()  
assert\_nothing\_raised()

assert\_throws() is related to catch()/throw(), useful in Ruby for  
breaking out of nested constructs.

I hope that helps.

James Edward G. II

---

<div class="post-metadata">

**Author:** ![asplake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/2bfe46/32.png) [@asplake](https://www.ruby-forum.com/u/asplake)\
**Post date:** [January 2, 2006, 8:35am UTC](https://www.ruby-forum.com/t/test-unit-assert-throws/51493/3 "2006-01-02T08:35:43Z")

</div>

“asplake” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> Hi,
> 
> Any good examples out there (I couldn’t find any) of assert\_throws? I  
> would love to know also why its first argument is a symbol…

#assert\_throw checks for a Kernel#throw, which takes a Symbol.  
Perhaps you were after #assert\_raise ?

* * *

require ‘test/unit’

def f  
throw :x  
end

def g  
raise  
end

class T \< Test::Unit::TestCase  
def test\_a  
assert\_throws(:x){f} # pass  
assert\_throws(:y){f} # fail  
end  
def test\_b  
assert\_raise(RuntimeError ){g} # pass  
assert\_raise(ArgumentError){g} # fail  
end  
end
