我怎样才能用茉莉花中的窗户

How can I use the window object in jasmine?

本文关键字:茉莉花 窗户      更新时间:2023-09-26

我正试图在Jasmine测试中使用window对象。

在测试文件loader_spec.s中,我有:

use strict;
var setupModuleLoader = require(../src/loader);
describe("setupModuleLoader", function() {
    it(exposes angular on the window, function() { 
      setupModuleLoader(window); 
      expect(window.angular).toBeDefined();
    }); 
});

loader.js文件中,我有:

use strict;
function setupModuleLoader(window) {
  var angular = window.angular = {}; //creates empty angular object in browser's `window`
}
module.exports = setupModuleLoader;

我在运行测试时得到一个参考错误,即window没有定义。

我正在使用这个使用PhantomJS的样板进行这个测试。

如果您想访问window对象,您应该确保您的测试在浏览器中运行,而不是在node.js中运行。

$ gulp test:unit

上面提到的样板中的任务运行普通的mocha测试,并且不启动浏览器。要访问window和其他特定于浏览器的对象,您应该将测试放在/tests/integration目录中,并像这样运行它们:

$ gulp test:integration

让代码单元与执行上下文松散耦合是一种很好的做法,这就是为什么样板中的单元测试不会启动浏览器的原因。他们不希望代码单元知道任何关于window或其他浏览器对象的信息。

当您的代码依赖于某些外部内容时,解决此问题的另一种方法是为依赖项创建mock。

Well窗口对象表示浏览器窗口。如果您从浏览器运行jasmine单元测试,那么它在您的脚本中是可用的,否则它是不可浏览的。

从控制台运行意味着您在脚本主机上运行javascript。因此主机无法找到Window对象。

浏览器选项不包括全局对象、窗口和自身的别名。

例如浏览器:['Chrome']