Unit testing with AJAX
Justin
justin.obara at utoronto.ca
Mon Feb 9 18:21:38 UTC 2009
Is this something that we should/could add to our unit test framework?
- Justin
On 9-Feb-09, at 11:21 AM, Colin Clark wrote:
> Michelle,
>
> This is a really nifty strategy. Thanks for sharing it with the
> list. One quick comment below...
>
> On 6-Feb-09, at 2:59 PM, Michelle D'Souza wrote:
>
>> I've spent a couple hours today trying to get the table of contents
>> tests passing and now that they are working I thought I'd share
>> what I learned (thanks Antranig). The problem I ran into was that
>> the code I was testing had an AJAX call in it. I needed to run the
>> test after the AJAX call returned. Our general test writing pattern
>> will not work in this case, instead I used our event system to run
>> the test. This is not a perfect solution since the test knows an
>> implementation detail of the code (that there is an AJAX call) but
>> I couldn't think of a better way to write this.
>
> Actually, I don't think this does reveal an implementation detail to
> the test code, or to anyone else for that matter. You've
> encapsulated this into a standard Infusion event ("myEvent"), so the
> contract is clear. The specifics of the AJAX call, however, don't
> leak out into user code. This is a good thing.
>
> Plus, generally users of this code would generally want to know
> about the fact that an AJAX call is being made so that they can use
> the event wisely.
>
> Colin
>
>>
>>
>> If you are going to use this strategy for code you are testing, it
>> is important to remember that the test itself needs to start inside
>> the event handler. This pattern looks like this:
>>
>> (function ($) {
>> $(document).ready(function () {
>> var tests = new jqUnit.TestCase("My Tests");
>>
>> var myEventHandler = function () {
>> tests.test("My Test", function () {
>> assertTrue("this is a test", true);
>> });
>> };
>>
>> var options = {
>> listeners: {
>> myEvent: myEventHandler
>> }
>> };
>>
>> fluid.myComponent(container, options);
>> });
>> })(jQuery);
>>
>>
>>
>>
>> ------------------------------------------------------
>> Michelle D'Souza
>> Software Developer, Fluid Project
>> Adaptive Technology Resource Centre
>> University of Toronto
>>
>>
>>
>> _______________________________________________________
>> fluid-work mailing list - fluid-work at fluidproject.org
>> To unsubscribe, change settings or access archives,
>> see http://fluidproject.org/mailman/listinfo/fluid-work
>
> ---
> Colin Clark
> Technical Lead, Fluid Project
> Adaptive Technology Resource Centre, University of Toronto
> http://fluidproject.org
>
> _______________________________________________________
> fluid-work mailing list - fluid-work at fluidproject.org
> To unsubscribe, change settings or access archives,
> see http://fluidproject.org/mailman/listinfo/fluid-work