Когда я использую nodeUnit писать модульные тесты для моделей Backbone, что-то странное случилось, вопрос можно резюмировать следующим образом:Подчеркивание IsObject() иногда не работает
var Player = Backbone.Model.extend({});
var player = new Player({name: 'Jacky'});
Затем я обновляю имя игрока с: игроком. set ('name', 'Scott'). Но я обнаружил, что атрибут имени вообще не обновляется (функция проверки достоверности для этой модели не существует), и есть такие странные атрибуты, как: [0]: n, [1]: a, [2]: m, [3] : e.
Он отлично работает, если я изменил метод обновления на player.set ({name: 'Scott'}).
Я сделал некоторое быстрое исследование и обнаружил, что метод Backbone.Model.set зависит от Underscore.isObject() метода, а последний реализуются как:
_.isObject = function(obj) {
return obj === Object(obj);
};
я назвал метод IsObject() в nodeUnit и в первом случае он работает нормально, но в последнем случае он работает не так, как ожидалось, например isObject ('name') вернет true вместо ожидаемого false.
У кого-нибудь есть идеи, что вызвало это?
Можете ли вы показать нам эти последние тестовые случаи? – Bergi
Я могу вам показать, но я боюсь, что это не поможет: 'var requirejs = require ('requirejs'); requirejs.config ({baseUrl: 'public/javascripts'}); requirejs (["app/cards", "app/rank"], function (Cards, Rank) { export ['Card equals'] = function (test) { test.ok (Cards.smallJoker(). Равно (Cards.smallJoker())) test.done(); }; }); ' – aqingsao