Unwanted behavior with "define" method an Test::Unit

I’m using “define_method” to build some unit test helpers.

They look as such:

class Test::Unit::TestCase
def self.name_of_test_helper
define_method(“test_whatever_for_#{custom_name}”) {
assert something_about(custom_name)
}
end
end

When I run my tests I get pages and pages of this:

./test/model_helper.rb:7: warning: multiple values for a block
parameter (0 for 1)
from ./test/unit/…/test_helper.rb:54
./test/model_helper.rb:7: warning: multiple values for a block
parameter (0 for 1)
from ./test/unit/…/test_helper.rb:53

Everything works out just fine, the tests test what I want them to
test. I just don’t want all these errors.

Hi –

On Sat, 11 Aug 2007, Collin M. wrote:

end
Everything works out just fine, the tests test what I want them to
test. I just don’t want all these errors.

What exactly is on the lines mentioned in the error messages?

David

line 7: define_method(“create_#{model_name}”) { |attrs|

Line 7 seems to be the problem line.

I think I want to do this:
define_method(“create_#{model_name}”) { |attrs={}|

But I cannot. I can still use the defined method and not send it an
argument, but then Ruby complains.

Found this:


Not sure if this is the most elegant way, but:

define_method(:method_name) do |*args|
parameter, parameter2 = *args
parameter2 ||= ‘default’
puts parameter
puts parameter2
end

That’ll do for now.