Mock Objects

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Mock Objects

Chad Nantais-2
Hi.

Could someone please direct me to a Squeak project (or some
documentation) that uses mock objects in its tests, specifically
dealing with testing network code like a web service.  I'm looking for
a way to speed up some unit tests that hit a remote service.

Thanks in advance,

Chad

Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

Frank Shearar
"Chad Nantais" <[hidden email]> wrote:

> Hi.
>
> Could someone please direct me to a Squeak project (or some
> documentation) that uses mock objects in its tests, specifically
> dealing with testing network code like a web service.  I'm looking for
> a way to speed up some unit tests that hit a remote service.

It's by no means fully functional, but you might want to look at
MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as I wrote it
in 2004.

Having a mock network layer not only lets you speed up tests, it also allows
you to disregard all the lovely things that can go wrong in the network. You
can run your tests knowing that you're not going to get red everywhere
because your colleague tripped over your fly lead, or is fiddling with a
patch panel in the next room. And, of course, a mock network layer lets you
INJECT errors :)

I do intend adding to the MockSocketStream at some stage, but my plate's too
full for the next several months.

frank


Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

Jason Rogers-4
While this mock layer is good for many applications, I think it's
probably too deep for what Chad is dealing with.  Chad -- you should
be able to mock out the service itself and inject that into your
application code.  While I haven't done this in a Smalltalk
application I have successfully and easily done it in *many*
applications in other languages.

Jason

On 6/23/06, Frank Shearar <[hidden email]> wrote:

> "Chad Nantais" <[hidden email]> wrote:
>
> > Hi.
> >
> > Could someone please direct me to a Squeak project (or some
> > documentation) that uses mock objects in its tests, specifically
> > dealing with testing network code like a web service.  I'm looking for
> > a way to speed up some unit tests that hit a remote service.
>
> It's by no means fully functional, but you might want to look at
> MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as I wrote it
> in 2004.
>
> Having a mock network layer not only lets you speed up tests, it also allows
> you to disregard all the lovely things that can go wrong in the network. You
> can run your tests knowing that you're not going to get red everywhere
> because your colleague tripped over your fly lead, or is fiddling with a
> patch panel in the next room. And, of course, a mock network layer lets you
> INJECT errors :)
>
> I do intend adding to the MockSocketStream at some stage, but my plate's too
> full for the next several months.
>
> frank
>
>
>


--
Jason Rogers

"Where there is no vision, the people perish..."
    Proverbs 29:18

Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

Chad Nantais-2
Frank & Jason,

I don't need anything too deep right now.  I just need to be able to
create an object that mocks up a simple API for a remote service.

I found this page and used it to create exactly what I needed.
http://www.cincomsmalltalk.com/userblogs/malby/SingleView.ssp?showComments=true&forPrinter=true&entry=3293316866

I'm also using it to test non-networked code now too.  For example,
when I am writing unit tests for Cart, and I want to test the
Cart>>total, which adds prices of CartItem instances that are in the
cart, I just mock up the CartItem instances and make them return some
number when sent #price.  This is great because I can really isolate
the Cart class that's being tested without it being dependant on
having a fully-working CartItem class.

Thanks for your help.

Chad

On 6/23/06, Jason Rogers <[hidden email]> wrote:

> While this mock layer is good for many applications, I think it's
> probably too deep for what Chad is dealing with.  Chad -- you should
> be able to mock out the service itself and inject that into your
> application code.  While I haven't done this in a Smalltalk
> application I have successfully and easily done it in *many*
> applications in other languages.
>
> Jason
>
> On 6/23/06, Frank Shearar <[hidden email]> wrote:
> > "Chad Nantais" <[hidden email]> wrote:
> >
> > > Hi.
> > >
> > > Could someone please direct me to a Squeak project (or some
> > > documentation) that uses mock objects in its tests, specifically
> > > dealing with testing network code like a web service.  I'm looking for
> > > a way to speed up some unit tests that hit a remote service.
> >
> > It's by no means fully functional, but you might want to look at
> > MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as I wrote it
> > in 2004.
> >
> > Having a mock network layer not only lets you speed up tests, it also allows
> > you to disregard all the lovely things that can go wrong in the network. You
> > can run your tests knowing that you're not going to get red everywhere
> > because your colleague tripped over your fly lead, or is fiddling with a
> > patch panel in the next room. And, of course, a mock network layer lets you
> > INJECT errors :)
> >
> > I do intend adding to the MockSocketStream at some stage, but my plate's too
> > full for the next several months.
> >
> > frank
> >
> >
> >
>
>
> --
> Jason Rogers
>
> "Where there is no vision, the people perish..."
>     Proverbs 29:18
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

stéphane ducasse-2
Chad

You know what would be great?
If you could write by pasting some of your code in a text editor and  
share that with us.
I would like to add some material to my Sunit tutorial and I could  
use your example.

Stef

On 23 juin 06, at 15:48, Chad Nantais wrote:

> Frank & Jason,
>
> I don't need anything too deep right now.  I just need to be able to
> create an object that mocks up a simple API for a remote service.
>
> I found this page and used it to create exactly what I needed.
> http://www.cincomsmalltalk.com/userblogs/malby/SingleView.ssp?
> showComments=true&forPrinter=true&entry=3293316866
>
> I'm also using it to test non-networked code now too.  For example,
> when I am writing unit tests for Cart, and I want to test the
> Cart>>total, which adds prices of CartItem instances that are in the
> cart, I just mock up the CartItem instances and make them return some
> number when sent #price.  This is great because I can really isolate
> the Cart class that's being tested without it being dependant on
> having a fully-working CartItem class.
>
> Thanks for your help.
>
> Chad
>
> On 6/23/06, Jason Rogers <[hidden email]> wrote:
>> While this mock layer is good for many applications, I think it's
>> probably too deep for what Chad is dealing with.  Chad -- you should
>> be able to mock out the service itself and inject that into your
>> application code.  While I haven't done this in a Smalltalk
>> application I have successfully and easily done it in *many*
>> applications in other languages.
>>
>> Jason
>>
>> On 6/23/06, Frank Shearar <[hidden email]> wrote:
>> > "Chad Nantais" <[hidden email]> wrote:
>> >
>> > > Hi.
>> > >
>> > > Could someone please direct me to a Squeak project (or some
>> > > documentation) that uses mock objects in its tests, specifically
>> > > dealing with testing network code like a web service.  I'm  
>> looking for
>> > > a way to speed up some unit tests that hit a remote service.
>> >
>> > It's by no means fully functional, but you might want to look at
>> > MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as  
>> I wrote it
>> > in 2004.
>> >
>> > Having a mock network layer not only lets you speed up tests, it  
>> also allows
>> > you to disregard all the lovely things that can go wrong in the  
>> network. You
>> > can run your tests knowing that you're not going to get red  
>> everywhere
>> > because your colleague tripped over your fly lead, or is  
>> fiddling with a
>> > patch panel in the next room. And, of course, a mock network  
>> layer lets you
>> > INJECT errors :)
>> >
>> > I do intend adding to the MockSocketStream at some stage, but my  
>> plate's too
>> > full for the next several months.
>> >
>> > frank
>> >
>> >
>> >
>>
>>
>> --
>> Jason Rogers
>>
>> "Where there is no vision, the people perish..."
>>     Proverbs 29:18
>>
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

Chad Nantais-2
Stef,

I have attached the MockObject code and a test example.

Let me know if you are looking for something else.

Chad

On 6/26/06, stéphane ducasse <[hidden email]> wrote:

> Chad
>
> You know what would be great?
> If you could write by pasting some of your code in a text editor and
> share that with us.
> I would like to add some material to my Sunit tutorial and I could
> use your example.
>
> Stef
>
> On 23 juin 06, at 15:48, Chad Nantais wrote:
>
> > Frank & Jason,
> >
> > I don't need anything too deep right now.  I just need to be able to
> > create an object that mocks up a simple API for a remote service.
> >
> > I found this page and used it to create exactly what I needed.
> > http://www.cincomsmalltalk.com/userblogs/malby/SingleView.ssp?
> > showComments=true&forPrinter=true&entry=3293316866
> >
> > I'm also using it to test non-networked code now too.  For example,
> > when I am writing unit tests for Cart, and I want to test the
> > Cart>>total, which adds prices of CartItem instances that are in the
> > cart, I just mock up the CartItem instances and make them return some
> > number when sent #price.  This is great because I can really isolate
> > the Cart class that's being tested without it being dependant on
> > having a fully-working CartItem class.
> >
> > Thanks for your help.
> >
> > Chad
> >
> > On 6/23/06, Jason Rogers <[hidden email]> wrote:
> >> While this mock layer is good for many applications, I think it's
> >> probably too deep for what Chad is dealing with.  Chad -- you should
> >> be able to mock out the service itself and inject that into your
> >> application code.  While I haven't done this in a Smalltalk
> >> application I have successfully and easily done it in *many*
> >> applications in other languages.
> >>
> >> Jason
> >>
> >> On 6/23/06, Frank Shearar <[hidden email]> wrote:
> >> > "Chad Nantais" <[hidden email]> wrote:
> >> >
> >> > > Hi.
> >> > >
> >> > > Could someone please direct me to a Squeak project (or some
> >> > > documentation) that uses mock objects in its tests, specifically
> >> > > dealing with testing network code like a web service.  I'm
> >> looking for
> >> > > a way to speed up some unit tests that hit a remote service.
> >> >
> >> > It's by no means fully functional, but you might want to look at
> >> > MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as
> >> I wrote it
> >> > in 2004.
> >> >
> >> > Having a mock network layer not only lets you speed up tests, it
> >> also allows
> >> > you to disregard all the lovely things that can go wrong in the
> >> network. You
> >> > can run your tests knowing that you're not going to get red
> >> everywhere
> >> > because your colleague tripped over your fly lead, or is
> >> fiddling with a
> >> > patch panel in the next room. And, of course, a mock network
> >> layer lets you
> >> > INJECT errors :)
> >> >
> >> > I do intend adding to the MockSocketStream at some stage, but my
> >> plate's too
> >> > full for the next several months.
> >> >
> >> > frank
> >> >
> >> >
> >> >
> >>
> >>
> >> --
> >> Jason Rogers
> >>
> >> "Where there is no vision, the people perish..."
> >>     Proverbs 29:18
> >>
> >>
> >
>
>
>



Squeak MockObject.txt (870 bytes) Download Attachment
Squeak MockObject - Cart Tests.txt (788 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Mock Objects

stéphane ducasse-2
TX I will look at that.!!!

Stef
On 27 juin 06, at 17:33, Chad Nantais wrote:

> Stef,
>
> I have attached the MockObject code and a test example.
>
> Let me know if you are looking for something else.
>
> Chad
>
> On 6/26/06, stéphane ducasse <[hidden email]> wrote:
>> Chad
>>
>> You know what would be great?
>> If you could write by pasting some of your code in a text editor and
>> share that with us.
>> I would like to add some material to my Sunit tutorial and I could
>> use your example.
>>
>> Stef
>>
>> On 23 juin 06, at 15:48, Chad Nantais wrote:
>>
>> > Frank & Jason,
>> >
>> > I don't need anything too deep right now.  I just need to be  
>> able to
>> > create an object that mocks up a simple API for a remote service.
>> >
>> > I found this page and used it to create exactly what I needed.
>> > http://www.cincomsmalltalk.com/userblogs/malby/SingleView.ssp?
>> > showComments=true&forPrinter=true&entry=3293316866
>> >
>> > I'm also using it to test non-networked code now too.  For example,
>> > when I am writing unit tests for Cart, and I want to test the
>> > Cart>>total, which adds prices of CartItem instances that are in  
>> the
>> > cart, I just mock up the CartItem instances and make them return  
>> some
>> > number when sent #price.  This is great because I can really  
>> isolate
>> > the Cart class that's being tested without it being dependant on
>> > having a fully-working CartItem class.
>> >
>> > Thanks for your help.
>> >
>> > Chad
>> >
>> > On 6/23/06, Jason Rogers <[hidden email]> wrote:
>> >> While this mock layer is good for many applications, I think it's
>> >> probably too deep for what Chad is dealing with.  Chad -- you  
>> should
>> >> be able to mock out the service itself and inject that into your
>> >> application code.  While I haven't done this in a Smalltalk
>> >> application I have successfully and easily done it in *many*
>> >> applications in other languages.
>> >>
>> >> Jason
>> >>
>> >> On 6/23/06, Frank Shearar <[hidden email]> wrote:
>> >> > "Chad Nantais" <[hidden email]> wrote:
>> >> >
>> >> > > Hi.
>> >> > >
>> >> > > Could someone please direct me to a Squeak project (or some
>> >> > > documentation) that uses mock objects in its tests,  
>> specifically
>> >> > > dealing with testing network code like a web service.  I'm
>> >> looking for
>> >> > > a way to speed up some unit tests that hit a remote service.
>> >> >
>> >> > It's by no means fully functional, but you might want to look at
>> >> > MockSocketStream. That SHOULD be in Squeak-3.8 and up, seeing as
>> >> I wrote it
>> >> > in 2004.
>> >> >
>> >> > Having a mock network layer not only lets you speed up tests, it
>> >> also allows
>> >> > you to disregard all the lovely things that can go wrong in the
>> >> network. You
>> >> > can run your tests knowing that you're not going to get red
>> >> everywhere
>> >> > because your colleague tripped over your fly lead, or is
>> >> fiddling with a
>> >> > patch panel in the next room. And, of course, a mock network
>> >> layer lets you
>> >> > INJECT errors :)
>> >> >
>> >> > I do intend adding to the MockSocketStream at some stage, but my
>> >> plate's too
>> >> > full for the next several months.
>> >> >
>> >> > frank
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >> --
>> >> Jason Rogers
>> >>
>> >> "Where there is no vision, the people perish..."
>> >>     Proverbs 29:18
>> >>
>> >>
>> >
>>
>>
>>
>> <Squeak MockObject.txt>
>> <Squeak MockObject - Cart Tests.txt>
>