Ich benutze Karma, Jasmin, Jasmin. Async, Sinon und Chai.
Die gute Nachricht ... dieser Test funktioniert richtig. Die Abhängigkeit wird verspottet, Spione werden aufgerufen, und das absichtliche Brechen der Testperson führt zu fehlgeschlagenen Tests.
%Vor% Die schlechten Nachrichten ... eine Schar von anderen Tests, die vorher gut waren, scheitern jetzt aus seltsamen Gründen. Beispielsweise:
%Code%
und
Error: Backbone.history has already been started
Wenn ich das Snippet ausfüge
%Vor% Dann funktionieren die anderen Tests wieder. Ich habe solche Sachen schon einmal erlebt und es war normalerweise ein sinonischer Spott, der nicht wiederhergestellt wurde. Der Aufruf TypeError: 'undefined' is not an object (evaluating 'Backbone.Validation.mixin')
scheint nicht die magische Kugel zu liefern, auf die ich gehofft hatte.
Das Problem ist bei Nicht-AMD-Modulen. Wenn ich mich richtig erinnere, wenn Squire einen neuen Kontext erstellt, erstellt es eine neue Instanz des Nicht-AMD-Moduls im globalen Namensraum. Das Ergebnis ist, dass Code und Test auf ein anderes Objekt verweisen. Ich glaube, ich habe dieses Problem gelöst, indem ich Folgendes gemacht habe:
%Vor%Squire sollte besser mit Nicht-AMD-Modulen umgehen.
Nach meiner Erfahrung verursacht Squire viel mehr Kopfschmerzen als es löst. Verwenden Sie irgendwelche jQuery-Plugins? Ich habe festgestellt, dass sie mit Squire nicht gut spielen und dazu führen können, dass nachfolgende Tests fehlschlagen. Wenn das der Fall ist, schauen Sie sich dies an blog darüber, wie man damit umgeht.
Meine Empfehlung ist jedoch, Squire völlig zu enttäuschen. Wenn Sie sinon verwenden und Ihre eigenen Dienstprogramme erstellen, um genau das nachzuahmen, was Sie brauchen, sollten Sie Ihre asynchronen Tests nicht nur synchrone synchrone synchrone Tests durchführen, sondern auch die Erstellung von mehr testbarem Code. Es sollte Ihnen auch helfen, Ihren Code und Ihre Bibliotheken auf einer tieferen Ebene zu verstehen - Stubbing von Backbone.history, um Routing-Aktionen durchzuführen, ohne tatsächlich Routen auszulösen, ist eine großartige Übung und ein fantastisches Werkzeug, um es Ihrer Testbibliothek hinzuzufügen.
Tags und Links javascript requirejs jasmine karma-runner squirejs