【问题标题】:Setting URL in Backbone.Router for QUnit testing在 Backbone.Router 中设置 URL 以进行 QUnit 测试
【发布时间】:2013-02-11 15:26:31
【问题描述】:

我有一个基于 Backbone.Router 的 myRouter,它根据 URL 调用某些 set() 方法:

var MyRouter = Backbone.Router.extend({
  routes: {
    "doSomething/:value":                 "doSetterOnModel",   
  },

  doSetterOnModel: function(value) {
    // does some set(value) calls on my Model
  },
});

我想现在使用 QUnit 测试测试模型是否正确更新(set()):

test( "update Model via URL change", function() {
      var value = "newValue";
      var url = "http://localhost/#/doSomething/" + value;

      //does not work as it moves page away from QUnit's tests.html page      
      window.location = url;

      // does also not work because it moves away from QUnit's tests.html page
      myRouter.navigate(url);

      deepEqual( myModel.get(key), value, "Value on Model was not updated by URL change");          
});

如何在 Qunit 中设置 URL 以测试我的路由器是否对某个 URL 执行正确的操作?

【问题讨论】:

    标签: backbone.js qunit backbone-routing


    【解决方案1】:

    当我想测试我的路由器时,我通常会完全绕过文档导航,只需调用 Backbone.history.loadUrl,它负责将 URL 片段与路由器方法匹配:

    Backbone.history.loadUrl("#/doSomething");
    

    这里的额外好处是您无需在测试代码中调用Backbone.history.start。还要注意使用或相对 url。不需要指定http://localhost 部分。

    Tiny demo here.

    【讨论】:

    • 谢谢你,你救了我。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多