jquery - BackboneJS 中的路由器实例不同

标签 jquery unit-testing backbone.js jasmine backbone-routing

在 BackboneJS 的 router.js 中使用 this.initialize();

有什么区别
require(['router'],function(Router) {
    router      = Router;
    router.intialize();                         
});

如何获取相同的实例?

谁能帮帮我,先谢谢了

编辑:

我想实现代码覆盖率单元测试(Jasmine.js 1.3.1)。

为此,我需要将路由器(与在没有代码覆盖工具的情况下运行应用程序时所拥有的实例完全相同)实例传递到我的 Jasmine 规范的 .js 文件。

如果不可能在规范执行期间获取相同的实例,请告诉我如何使用不同的方法获取实例。

如果您在此转换过程中需要任何说明,请告诉我。

提前致谢。

最佳答案

区别在于构造函数。主干类都有一个在实例化该类时运行的方法。当您执行 new Backbone.Router() 时,constructor 方法就是调用您的 initialize 方法的方式。

正如您所见,Router构造函数:

var Router = Backbone.Router = function(options) {
    options || (options = {});
    if (options.routes) this.routes = options.routes;
    this._bindRoutes();
    this.initialize.apply(this, arguments);
};

调用initialize和实例化路由器之间的主要区别在于,当您实例化它时,路由是绑定(bind)的。

嗯,这是主要的 Backbone 区别。调用 new A.B()A.B() 之间还存在 Javascript 差异,即 new 关键字创建一个新对象并设置它作为 constructor/initialize 函数中的 this ,而直接调用它会设置 thisRouter 类本身。

因为在测试方法时您几乎肯定不想使用 Router 类作为 this,所以您可能想要做的只是实例化一个Rotuer 正确地添加到您的设置代码中。

关于jquery - BackboneJS 中的路由器实例不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631915/

相关文章:

c# - 单元测试序列化有什么意义吗?

javascript - 使用 marionette 添加主干提取的集合结果

jQuery如何为Jcrop添加缩放功能

jquery - HTML 范围 slider 和 jQuery?

php - 无法在 laravel 的 Controller 中使用数据库事务(DB::beginTransaction)

asp.net - 如何从 JsonResult 对象获取实际的 JSON 进行单元测试?

javascript - 上传大文件 (100mb+) 只会导致 Chrome 崩溃

jquery - Backbone.js 中的 PUT 和 POST 请求

javascript - 布局、Phonegap 和 JSON

javascript - 滚动到具有特定类的 id