Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Jasmine中测试window.location_Javascript_Backbone.js_Jasmine - Fatal编程技术网

Javascript 如何在Jasmine中测试window.location

Javascript 如何在Jasmine中测试window.location,javascript,backbone.js,jasmine,Javascript,Backbone.js,Jasmine,在我使用主干网的应用程序中,我具有以下功能: handleModelSaved: function () { var redirect_location = 'redirect_path'; App.Messenger.success('Report was saved successfully!'); setTimeout(function () { window.location = redirect_location; }, 2000);

在我使用主干网的应用程序中,我具有以下功能:

  handleModelSaved: function () {
    var redirect_location = 'redirect_path';

    App.Messenger.success('Report was saved successfully!');
    setTimeout(function () {
      window.location = redirect_location;
    }, 2000);
  }
目前,我有以下测试:

  describe('handleModelSaved', function () {
    beforeEach(function () {
      view = initV3View();
      spyOn(App.Messenger, 'success');
      view.handleModelSaved();
    });

    it("sends a success message", function () {
      expect(App.Messenger.success).toHaveBeenCalledWith('Report was saved successfully!');
    });
  }); 
我的问题是,我如何用Jasmine测试这个代码:

setTimeout(function () {
  window.location = redirect_location;
}, 2000);

您只需检查窗口对象上的location属性即可获得特定值。当然,您只能在超时结束后执行此操作。您可能想做的是用自己的实现覆盖setTimeout函数,该实现立即调用指定的回调函数。这样,您还可以检查setTimeout是否使用预期的超时调用。您可以自己执行此操作,也可以使用Jasmine的时钟函数模拟本机超时函数:


另一个选项是使用作为参数传递给it()函数回调的done函数。这使得测试异步。

除了
窗口。位置将设置为类似
http://localhost:9876/context.html
不管怎样,没有?