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

C

Collin Miller

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.
 
D

dblack

Hi --

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.

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


David

--
* Books:
RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242)
RUBY FOR RAILS (http://www.manning.com/black)
* Ruby/Rails training
& consulting: Ruby Power and Light, LLC (http://www.rubypal.com)
 
C

Collin Miller

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.
 
C

Collin Miller

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top