我该如何模拟窗口对象?我正在编写Firefox扩展程序,想要使用Jasmine进行JavaScript测试。
在我的JavaScript代码中,我有:
function submit() {
...
var url = window.arguments[0];
...
}
该代码片段是一个JavaScript函数,名为"submit()"。它包含一些未列出的代码,因此我们无法确定这个函数是用于什么目的。在这个函数中,变量"url"被赋值为"window.arguments[0]",这意味着该函数从窗口参数中获取了一个URL作为输入。显然,如果没有从window.openDialog传递任何参数,window.arguments[0]对象不存在,因此我需要在jasmine中模拟它。
以下是我尝试使用"with"语句来模拟它:
it("应该提交到服务器", function() {
var localContext = {
"window": {
arguments: ["http://localhost"]
}
}
with(localContext);
但我仍然收到此错误 TypeError: Cannot read property '0' of undefined,好像当测试运行时 window.arguments[0] 被真正的窗口清除了,因为如果我在测试中执行
window.arguments[0]
它会正确地打印出"http://localhost"。但是当涉及 submit() 方法时,它显示 window.argument 未定义的错误。