Re: Mock HTTP servers for unit tests. [message #185673 is a reply to message #185671] |
Tue, 29 April 2014 23:56 |
Daniel Pitts
Messages: 68 Registered: May 2012
Karma:
|
Member |
|
|
On 4/29/14 1:39 PM, Jerry Stuckle wrote:
> On 4/29/2014 4:24 PM, Daniel Pitts wrote:
>> On 4/29/14 11:51 AM, Jerry Stuckle wrote:
>>> On 4/29/2014 1:23 PM, Daniel Pitts wrote:
>>>> I'm developing some code which makes http requests from PHP. I'd
>>>> like to
>>>> be able to Unit Test my code as smoothly as possible.
>>>>
>>>> I've searched Google, and I see there is more than one solution
>>>> available. I like the look of InterNations[1], but I wanted to ask
>>>> this
>>>> community if they've had experience with any of them, and whether that
>>>> experience was positive or negative.
>>>>
>>>> Things I need:
>>>> * Ability to validate a specific request was made, with a specific
>>>> set of Headers.
>>>> * Ability to provide a "mock" response, and validate my code can
>>>> handle it.
>>>>
>>>> Things I really want:
>>>> * Ability to send parallel requests (think curl_multi), and
>>>> validate
>>>> the requests are made in parallel.
>>>> * Ability to delay one response for a specific amount of time, but
>>>> have another response return earlier.
>>>>
>>>> Thanks,
>>>> Daniel.
>>>>
>>>> [1] https://github.com/InterNations/http-mock
>>>
>>> Daniel,
>>>
>>> Normally when testing, I test against the site the code is written for.
>>> If that's not possible (or I need further information than is supplied
>>> by the server, as you seem to need), I create my own test site and write
>>> server-side code to provide the appropriate information.
>> I'm talking about Unit Tests... I need to be able to run them while
>> offline, for instance. Integration tests would in theory be feasible
>> against a site. Note that I support multiple sites and I'm wanting to
>> unit-test some core functionality, not validate integration with any
>> other sites.
>
> Good unit tests are always custom written, and are written against the
> design specs (not the code).
>
>>>
>>> You can see if the requests were made in parallel from the server logs.
>>> Other information can be validated by the pages being requested.
>> This doesn't solve my underlying problem. I want to write a Unit Test,
>> not an Integration Test. My Unit Test should take a few seconds at most
>> to run, and should not depend on an external service which may be
>> unavailable.
>>
>> Thanks,
>> Daniel.
>>
>
> OK, then you need to write the unit test. Every one I have written in
> many years of programming has been unique, because the code it's testing
> is unique. I've seen drivers out there - but they really don't do much
> more than run a series of tests in sequence; you still have to write the
> individual tests. And I can do the same with a bash shell script (or
> even a PHP or other scripting language script).
>
> And remember to test both valid and invalid values in your unit test.
Very good advice, though it doesn't answer the question nor address the
actual post I made in any way.
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.
Thanks,
Daniel.
|
|
|