Lorsque j'utilise nodeUnit pour écrire des tests unitaires pour les modèles de Backbone, quelque chose de bizarre est arrivé, la question peut se résumer comme:Souligné IsObject() parfois fonctionne pas
var Player = Backbone.Model.extend({});
var player = new Player({name: 'Jacky'});
ensuite mettre à jour le nom du joueur avec: joueur. set ('nom', 'Scott'). Mais j'ai trouvé que l'attribut name n'est pas du tout mis à jour (pas de fonction validate pour ce modèle), et il y a des attributs bizarres comme: [0]: n, [1]: a, [2]: m, [3] : e.
Cela fonctionne très bien si j'ai changé la méthode de mise à jour en player.set ({name: 'Scott'}).
J'ai fait quelques enquête rapide et a constaté que la méthode Backbone.Model.set dépend de la méthode Underscore.isObject(), et celui-ci est mis en œuvre:
_.isObject = function(obj) {
return obj === Object(obj);
};
J'ai appelé la méthode IsObject() dans nodeUnit cas de test, et dans le premier cas cela fonctionne bien, mais dans les derniers cas, cela ne fonctionne pas comme prévu, par exemple isObject ('nom') retournera vrai au lieu du faux attendu.
Quelqu'un at-il une idée de ce qui a causé cela? Pouvez-vous vous assurer que vous utilisez la dernière version de Backbone?
Pouvez-vous nous montrer ces derniers cas de test? – Bergi
Je peux vous montrer, mais je crains que cela n'aide pas: 'var requirejs = require ('requirejs'); requirejs.config ({baseUrl: 'public/javascripts'}); requirejs (["app/cards", "app/rank"], function (Cartes, Rang) { exports ['Carte égale'] = fonction (test) { test.ok (Cards.smallJoker() est égal à (Cards.smallJoker()));; test.done(); }; }); ' – aqingsao