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
不管怎样,没有?