assert_name doesn't exist as a function?

  • Thread starter Mike RegistrationErr
  • Start date
M

Mike RegistrationErr

The script (test.rb):

== START ==
require 'rubygems'
require 'firewatir'

include Test::Unit
include Test::Unit::Assertions
include Test::Unit::TestCase

assert_same "hello", "hello"
== END ==

doesn't seem to work. It says:
test.rb:8: undefined method `assert_same' for main:Object
(NoMethodError)

Surely the includes include this method?

I am new to ruby. Googling just brings up billions of irrelevant
results. The more I google the more confusion occurs. If someone can
just give me a quick heads up to what is wrong then I can sort this out.

Thanks!
 
M

Mike RegistrationErr

I added this line:
require 'test/unit/assertions'

Which is different from:
include Test::Unit::Assertions

In PHP require and include are the same hence the confusion having come
from PHP. I don't understand the difference between require and include
in ruby yet, but at least my problem is sorted :)
 
B

Brian Candler

Mike RegistrationErr wrote in post #993884:
I added this line:
require 'test/unit/assertions'

Which is different from:
include Test::Unit::Assertions

In PHP require and include are the same hence the confusion having come
from PHP. I don't understand the difference between require and include
in ruby yet, but at least my problem is sorted :)

"require" means "go and load this ruby source file, if you've not loaded
it before"

"include" means (roughly) "add the methods in that module into the
current class"

"extend" means (roughly) "add the methods in that module into the
current object"

module Foo
def bar
puts "I am bar!"
end
end

bar # doesn't work
include Foo
bar # now it works

a = "Hello"
a.extend Foo
a.bar # this works too
 
7

7stud --

Mike RegistrationErr wrote in post #993883:
The script (test.rb):

== START ==
require 'rubygems'
require 'firewatir'

include Test::Unit
include Test::Unit::Assertions
include Test::Unit::TestCase

assert_same "hello", "hello"
== END ==

doesn't seem to work. It says:
test.rb:8: undefined method `assert_same' for main:Object
(NoMethodError)

Surely the includes include this method?

I am new to ruby.

In ruby 'hello' and 'hello' are not *the same*. Quotes serve as a
String constructor, and those are two different objects. For instance,

a = 'hello'
b = 'hello'

if a.equal?(b)
puts 'yes'
else
puts 'no'
end

--output:--
no


You may wish to use assert_equal, which tests whether two strings
contain the same characters:

a = 'hello'
b = 'hello'

if a == b
puts 'yes'
else
puts 'no'
end

--output:--
yes
 
B

Brian Candler

7stud -- wrote in post #994086:
In ruby 'hello' and 'hello' are not *the same*. Quotes serve as a
String constructor, and those are two different objects.

That would explain it if assert_same raised an AssertionFailedError. But
it does not explain the NoMethodError :)

It works as expected for me if I require test/unit explicitly:

irb(main):001:0> require 'test/unit'
=> true
irb(main):002:0> include Test::Unit::Assertions
=> Object
irb(main):003:0> assert_same "hello","hello"
Test::Unit::AssertionFailedError: <"hello">
with id <70122845327940> expected to be equal? to
<"hello">
with id <70122845327920>.
from /usr/lib/ruby/1.8/test/unit/assertions.rb:48:in `assert_block'
from /usr/lib/ruby/1.8/test/unit/assertions.rb:495:in
`_wrap_assertion'
from /usr/lib/ruby/1.8/test/unit/assertions.rb:46:in `assert_block'
from /usr/lib/ruby/1.8/test/unit/assertions.rb:249:in `assert_same'
from (irb):3
from /usr/lib/ruby/1.8/optparse.rb:311

I am using ruby 1.8.7p299 under Ubuntu 10.10 x86_64. The OP didn't
specify their platform. Maybe they are running an old version of Ruby
which doesn't include assert_same? Or possibly require 'firewatir' is
defining the Test::Unit::* constants, without actually requiring
test/unit/assertions?
 

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

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top