有没有办法在我的单元测试中测试一个对象是否“是”Backbone.Model
Is there a way to test whether an object "is a" Backbone.Model in my unit tests?
作为主干项目的单元测试(使用 QUnit)的一部分,我测试了一些返回主干模型数组的集合操作函数。
有没有办法直接测试(为了理智起见)我的数组中的对象是否扩展了 Backbone.Model,或者我应该只做鸭子类型检查(如果是这样,如何以及基于哪个唯一属性,例如)?
由于javascript中没有真正的"类"结构,typeof
显然不会在这里解决问题。
我可以看到这在我的集合的其他测试中很有用,或者检查事情是否是我的特定 Backbone 类的实例等。
如何使用instanceof
:
console.log(yourObject instanceof Backbone.Model);
实例运算符测试对象的原型中是否有 链接构造函数的原型属性。
对对象类型的检查是 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
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- Ember Data DS.Model's set函数不起作用
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 有没有办法在我的单元测试中测试一个对象是否“是”Backbone.Model
- 是否可以将Razor文件中的Model扩展到一个单独的Javascript文件中
- 检查来自ng-model的数据是否为数字
- 在angular中,不使用ng-model和ng-bind是否可以实现双向数据绑定?
- & -model是否可以包含& -集合
- 是否可以在angularjs中使用ng-model预填充表单?
- angular-ui/bootstrap typeahead 是否支持 ng-model-options