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)")
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
···
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
--
share your knowledge. it's a way to achieve immortality.
- h.h. the 14th dali lama
Indeed! Thank you. I feel like a dolt, but now I'll never forget again =)
James Herdman
···
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