[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Regarding Testing Mixins

James Herdman

3/25/2006 4:39:00 AM

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 Herdman

3 Answers

Ara.T.Howard

3/25/2006 5:10:00 AM

0

James Herdman

3/25/2006 5:11:00 AM

0

On 2006-03-25 00:09:47 -0500, ara.t.howard@noaa.gov said:

> On Sat, 25 Mar 2006, James Herdman wrote:
>
>> 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 Herdman
>
> 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

Indeed! Thank you. I feel like a dolt, but now I'll never forget again =)

James Herdman

James Gray

3/25/2006 4:30:00 PM

0

On Mar 24, 2006, at 10:43 PM, James Herdman 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 Gray II