Re: Mock HTTP servers for unit tests. [message #185695 is a reply to message #185694] |
Thu, 01 May 2014 02:37 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 4/30/2014 9:47 PM, Denis McMahon wrote:
> On Wed, 30 Apr 2014 11:34:15 -0400, Jerry Stuckle wrote:
>
>> On 4/30/2014 10:28 AM, Denis McMahon wrote:
>>> On Tue, 29 Apr 2014 16:56:57 -0700, Daniel Pitts wrote:
>
>>>> I am very familiar with testing methodologies and technologies. Just
>>>> most of my recent experience was with Java, where it's relatively easy
>>>> to start a mock http server in a separate thread. Not as easy in PHP.
>>>> I'm asking about Mock HTTP servers. Not about testing.
>
>>> What do you want your mock http server to do? It probably isn't going
>>> to be able to sit on port 80 without privs, assuming nothing else is on
>>> port 80 already. Does it need to do more than open a listening port on
>>> localhost, listen for some packets, send responses depending on the
>>> requests? I believe php comes with a basic http server, perhaps you
>>> could adapt that to your needs?
>
>> Denis,
>> Why bother, when it's so easy to set up an Apache test system?
>
> Hey Jerry, the way he wants to do it isn't the way I'd do it - if I
> wanted to test my code against some web-server server-side functionality,
> I'd implement the server function in my server and then test my code
> against it.
>
> But for unit test, I'd normally write a wrapper that delivered the dummy
> test http responses into the code that was expected to process them. If I
> was making calls to another webserver I'd probably be using curl which is
> generally mature code and in my experience tested well enough by its own
> developers that I can pretty reliably take it that it will accurately
> handle its part of the job.
>
> That means I really don't need to worry about testing the curl / remote
> server / curl part of anything I develop, I just have to check that the
> request data that would go to curl is right, and that what I expect to
> come back from curl would get correctly processed, and for that purpose
> the boundary of the code I am testing would be the interface to the curl
> calls.
>
> Of course it may be that he wants to test the remote server part of the
> application as well, but if he's trying to do that with a mock server
> he's screwing his tests over big time, because the only correct way to
> test the remote server part of the application is by running it as part
> of a full blown server, not using some pseudo server.
>
Denis,
I agree with you - but it looks to me like he wants to do more of a
module test than a unit test. The difference being that unit test
doesn't normally require external resources, but a module test often
does. In such a case, I agree with you - I'd set up a test server and
run the code against the server, with appropriate code on the server to
return both good and bad responses.
--
==================
Remove the "x" from my email address
Jerry Stuckle
jstucklex(at)attglobal(dot)net
==================
|
|
|