Wow! This is really informative. Thank you so much! Now I think I understand why the executing order is the way it is in the second example.
Thanks again! On Oct 23, 10:25 am, Steven Parkes <smpar...@smparkes.net> wrote: > On Oct 22, 2009, at Oct 22,6:53 PM , gMinuses wrote: > > > Is there a thorough explanation or tutorial to introduce how > > it actually works? > > I just looked at the code. > > The key is that the bodies of your tests don't actually run when the > test() function executes. They are queued up as tasks and then run via > a loop which is scheduled by a call to setTimeout within qunit. > > Without going into the gory details, qunit assumes your test is > complete unless told otherwise. stop() tells qunit to stop itself > until told otherwise. So even when your test body finishes, qunit > doesn't assume the test is over and go on to the next one. Presumably > you have something that will execute a callback asynchronously, > possibly runnings ok()s. When your test is done, failed or not, you > call start() to tell qunit to finish up your test (check expects, > etc.) and go on to subsequent tests. There's also an option for stop, > stop(n), which tells qunit to come back to life after n milliseconds > if it hasn't been told to earlier via start(). You can use this to > handle cases where, because of a failure in the test, start() never > gets called which would otherwise cause the test suite to stop midway. > > > > > asyncTest('yet another asyncTest', function() { > > setTimeout(function() { > > console.log(5); > > ok(true, 'yet another success'); > > start(); > > > stop() > > $.ajax({ > > url: './index.html', > > success: function() { > > console.log(6); > > ok(true, 'yet another ajax success'); > > start(); > > } > > }) > > > }, 100) > > }) > > qunit doesn't expect to be started and stopped more than once per > test. There's really no value to that. start and stop are starting and > stopping quint, not your test. Your code executes as if start() and > stop() weren't there: they're just signals to qunit. It makes no sense > to signal qunit to start and then in the next line tell it not to > start. You should execute stop() once per async test and start() once > per async test. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---