2013-03-30 15 views
11

Ich benutze QUnit, um mein JavaScript zu testen. Ich benutze auch Requirejs. Ich habe Test-Code, der wie folgt aussieht:QUnit Autostart

QUnit.config.autostart = false; 

require(['tests/tests'], function() { 
    QUnit.start(); //Tests loaded, run tests 
}); 

Dies funktioniert gut in FF (19.0.2, wie es geschieht), aber in beiden Chrome (27) und IE (10), ich bin eine QUnit Störung zu erhalten:

"pushFailure() Behauptung außerhalb Test Kontext"

es stellte sich heraus, dass ich nicht um den Anruf zu QUnit.start in IE und Chrome brauchen. Hat das jemand anderes gesehen oder hat er irgendwelche Vorschläge, warum?

Antwort

13

Wenn jemand anderes dieses Problem trifft, habe ich eine Lösung gefunden. Empirisch löscht sowohl Chrome als auch IE das Ladeereignis von QUnit, sobald auf QUnit zugegriffen wird und Ladeaufrufe gestartet werden. Was ich getan habe, ist dies:

<script type="text/javascript" src="qunit-1.11.0.js"></script> 
<script type="text/javascript"> 
    QUnit.config.autostart = false; 
</script> 
    <script type="text/javascript" data-main="main" src="require.js"></script> 

So, Last QUnit, den Autostart gesetzt und dann requirejs Last

Dies ist chaotischer als Autostart-Einstellung = false in main.js aber es hat den Vorteil der Arbeits :)

+0

Dies scheint auch eine gute Lösung zu sein: http://stackoverflow.com/questions/15921707/qunit-unit-test-error-on-jquery-ajax –