2014-07-03 5 views
5

ich ein html 5 drag testen will und fallen, was ich würde zwar funktionieren:Wie ein html5 ziehen zu testen und fallen in QUnit

Von Testdatei

var event = new Event('drop',{ 
    'originalEvent':{ 
     'dataTransfer':{ 
      'getData': function(){ 
       return 'tr#0.sprint' 
      } 
     } 
    }, 
    stopPropagation': function() {return;} 
} 
$('tr#0.sprint').trigger(event); 

Dies, so dass das Ereignis ausgelöst wird und alle Funktionen sind so eingestellt, dass sie das liefern, was ich testen möchte.

eigentliche Skript:

Backbone Rahmen

myView = Backbone.View.extend({ 

    ... 

    drop : function(event) 
    { 
     event.stopPropagation(); 
     var data = event.originalEvent.dataTransfer.getData('element'); 

     // some code 

    }, 

    ... 

}; 

Leider dieser Fehler ist zu Illigal function call

Wenn ich das dataTransfer Objekt entfernen und versuchen, es selbst richte ich einen undefinierten Fehler erhalten

Antwort

2

Wenn Sie es etwas anders einstellen, macht es einen Unterschied:

var event = new Event('drop',{ 
    stopPropagation: function() {return;} 
}); 
event['originalEvent'] ={ 
    'dataTransfer':{ 
     'getData': function(){ 
      return 'tr#0.sprint' 
     } 
    } 
}; 
$('tr#0.sprint').trigger(event); 

Dies ist eine "manuelle" Möglichkeit, Attribute eines Javascript-Objekts zu setzen. Die dem Konstruktor des Ereignisses hinzugefügten Argumente werden vom Konstrukt des Ereignisobjekts überprüft.