Forum: Ruby Regarding Testing Mixins

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
James H. (Guest)
on 2006-03-25 06:44
(Received via mailing list)
How does one write a unit test for a mixin?  I gathered since our unit
test is a class (TestClassName < Test::Unit::TestCase), we could just
include said module into said class.  However, I've ran into a problem.

Suppose my project directory is as follows:

../project_dir/trunk/lib		# Where all my classes and scripts go
../project_dir/trunk/tests	# Where all my tests go

My mixin resides in the lib folder, and normally I use this neat trick
to handle this discreprancy in file locations:

$:.unshift File.join(File.dirname(__FILE__), "..", "lib") # Thank you
Pick Ax!

Why doesn't this seem to work for mixins?  Where does Ruby look for
mixins?

I'm assuming it's a path problem despite the fact that Ruby groans that
the name I'm providing it is an unitialized constant (e.g. include
Mixin -- if I write include "Mixin", Ruby tells me "wrong argument type
String (expected Module)")

Thank you,

James H.
unknown (Guest)
on 2006-03-25 07:09
(Received via mailing list)
On Sat, 25 Mar 2006, James H. wrote:

> handle this discreprancy in file locations:
>
> Thank you,
>
> James H.

   a) you still must require your mixin using the __FILE__ method
   b) then you mix it in as normal


eg

   require 'mixin'

   class Test < Test::Unit::TestCase
     include Mixin
   end

make sense?

regards.

-a
James H. (Guest)
on 2006-03-25 07:14
(Received via mailing list)
On 2006-03-25 00:09:47 -0500, removed_email_address@domain.invalid said:

>>
>> String (expected Module)")
>
> -a
Indeed!  Thank you.  I feel like a dolt, but now I'll never forget again
=)

James H.
James G. (Guest)
on 2006-03-25 18:30
(Received via mailing list)
On Mar 24, 2006, at 10:43 PM, James H. wrote:

> Suppose my project directory is as follows:
>
> ../project_dir/trunk/lib		# Where all my classes and scripts go
> ../project_dir/trunk/tests	# Where all my tests go
>
> My mixin resides in the lib folder, and normally I use this neat
> trick to handle this discreprancy in file locations:
>
> $:.unshift File.join(File.dirname(__FILE__), "..", "lib") # Thank
> you Pick Ax!

Just FYI, you can also solve this by running your tests (from the
root project directory) with something like:

   $ ruby -I lib:test test/ts_all.rb

If you use Rake, it will automatically add the directories for your
test tasks.

James Edward G. II
This topic is locked and can not be replied to.