Подтвердить что ты не робот

Есть ли способ проверить, является ли объект "базой.Модель" в моих модульных тестах?

Как часть моих модульных тестов (используя QUnit) для базового проекта, я тестирую некоторые функции управления коллекцией, которые возвращают массивы базовых моделей.

Есть ли способ непосредственно протестировать (для здравого смысла), будут ли объекты в моем массиве расширять Backbone.Model или мне просто делать проверку типа утки (и если да, то как и по каким уникальным атрибутам, например)

Поскольку в javascript нет реальной конструкции класса, typeof, очевидно, не будет делать трюк здесь.

Я мог видеть, что это полезно в других тестах по дороге для моих коллекций или для проверки того, что вещи являются экземплярами моих конкретных классов Backbone и т.д.

4b9b3361

Ответ 1

Как насчет использования instanceof:

console.log(yourObject instanceof Backbone.Model);

Оператор instanceof проверяет, имеет ли объект в своем прототипе связать свойство прототипа конструктора.

Ответ 2

Проверка на тип объекта - это запах кода на таких языках, как JavaScript.

Если вам нужно знать, что ваша коллекция возвращает конкретную модель при вызове определенного метода, заполните коллекцию известными моделями и сравните их с этими моделями.

MyModel = Backbone.Model.extend({});

MyCollection = Backbone.Collection.extend({
  model: MyModel,

  getThatOne: function(){
    return this.at[0];
  }
});


m1 = new MyModel();
m2 = new MyModel();

col = new MyCollection([m1, m2]);

retrieved = col.getThatOne();

retrieved === m1 //=> true