Just use sync: true in all tests and put an end to this discussion :)
On Oct 22, 9:26 pm, gMinuses <gminu...@gmail.com> wrote:
> I'd like to test the following code to make sure:
>
> 1. setTimeout calls the function
> 2. ajax success callback is called
>
> setTimeout(function() {
>
> $.ajax({
> url: './index.html',
> success: function() {}
> })
>
> }, 100);
>
> If I only have one nested asynchronous test like this, it works:
>
> asyncTest('asyncTest', function() {
> setTimeout(function() {
> console.log(1);
> ok(true, 'success');
> start();
>
> asyncTest('nested asyncTest', function() {
> $.ajax({
> url: './index.html',
> success: function() {
> console.log(2);
> ok(true, 'ajax success');
> start();
> }
> })
> })
>
> }, 100)
>
> })
>
> But if there are multiple tests, it works, but run out of order:
>
> asyncTest('asyncTest', function() {
> setTimeout(function() {
> console.log(1);
> ok(true, 'success');
> start();
>
> asyncTest('nested asyncTest', function() {
> $.ajax({
> url: './index.html',
> success: function() {
> console.log(2);
> ok(true, 'ajax success');
> start();
> }
> })
> })
>
> }, 100)
>
> })
>
> asyncTest('another asyncTest', function() {
> setTimeout(function() {
> console.log(3);
> ok(true, 'another success');
> start();
>
> asyncTest('another nested asyncTest', function() {
> $.ajax({
> url: './index.html',
> success: function() {
> console.log(4);
> ok(true, 'another ajax success');
> start();
> }
> })
> })
>
> }, 100)
>
> })
>
> If you open firebug, you can see the order is "1,3,2,4", which can
> cause disasters.
>
> The real world problem is that I use setInterval to periodically check
> location.hash to implement a cross-browser "onhashchange" event, and I
> bind a function to this event, when the function gets called, it will
> make an ajax call. I set a different value to location.hash in every
> test to trigger the event, which is actually asynchronous. So how do I
> use qunit to test this code?
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---