On Sun, Mar 7, 2010 at 2:17 AM, Adam Akhtar <adamtemporary / gmail.com> wrote=
:
> Hi im still learning testing and bit confused about testing the
> parse_file method below
>
>
> class Data
> =A0def initialize a_file
> =A0 =A0 @records =3D parse_file(a_file)
> =A0end
>
> =A0 def parse_file(a_file)
> =A0 =A0 =A0....
> =A0 end
> end
>
> To test parse_file i must first create a new data object i.e.
>
> sample_data =3D Data.new("survey")
> then in my test
>
> assert_equal blah, sample_data.parse_file("sample.txt")
>
> but in the test when i create a new data object the the method =A0will be
> invoked via initialize before ive even tested it which doesnt sit right
> with me.
>
> Should i be mocking this? Or is there a simpler solution to this.
> --
> Posted via http://www.ruby-forum.com/.
>
>

Hmm seems you want to test something you did not implement.
A first but radical measure would be to do some [BT]DD. That means
that you have to throw away your code because you simply do not hava
any right to write code that does not make any tests pass... Then
write your tests (I prefer specs or behaviors) and then implement
them. Now your issue above should be a non issue (I guess, but if it
is please post again).

A second idea is to do some very nasty setup like

object =3D Data.allocate
assert_equal blah, object.parse

OMG this code is sooo fragile, but it might save your day.

And last but not least mocking isa powerful technique, I do not know a
lot about it :(. Here it's use might hide a design flaw though IMHO.

HTH
Robert
--=20
Learning without thought is labor lost; thought without learning is perilou=
s.=94
--- Confucius