Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 使用依赖于窗口的外部库运行intern runner失败。ReferenceError:未定义窗口_Javascript_Intern - Fatal编程技术网

Javascript 使用依赖于窗口的外部库运行intern runner失败。ReferenceError:未定义窗口

Javascript 使用依赖于窗口的外部库运行intern runner失败。ReferenceError:未定义窗口,javascript,intern,Javascript,Intern,我一直在努力使Intern与另一个名为Pact的图书馆同时工作,用于合同测试。我的虚拟测试如下所示: define([ 'intern!object', 'intern/chai!expect', 'bower_components/pact-consumer-js-dsl/dist/pact-consumer-js-dsl.js' ], function(registerSuite, expect) { registerSuite({ name: 'Test',

我一直在努力使Intern与另一个名为Pact的图书馆同时工作,用于合同测试。我的虚拟测试如下所示:

define([
  'intern!object',
  'intern/chai!expect',
  'bower_components/pact-consumer-js-dsl/dist/pact-consumer-js-dsl.js'
], function(registerSuite, expect) {
  registerSuite({
    name: 'Test',

    'login form': function() {
      var _this = this;

      return this.remote
        .get(loginUrl)
        ...
        .end();
    }
  });
});
define({

  proxyPort: 9999,

  proxyUrl: 'http://localhost:9999/',

  capabilities: {
    'selenium-version': '2.45.0'
  },

  environments: [
    { browserName: 'chrome' }
  ],

  tunnel: 'NullTunnel',

  maxConcurrency: 3,

  functionalSuites: ['test/intern/integration/login'],

  excludeInstrumentation: /^tests|bower_components|node_modules\//

});
问题是,如果我尝试运行包含Pact库(第4行)的测试,Intern会显示一个错误,因为没有定义
window

警告:引用错误:未定义窗口

如果我删除了库的包含,测试将正确运行,打开浏览器,它将完成它应该做的一切。我已经以
functionalSuite
的形式运行了它,并且我使用的是
intern runner
而不是客户端。我尝试使用Chrome或PhantomJS,但运气不佳

这不仅仅是Pact库的问题,似乎每次我尝试使用同样使用
窗口
文档
(例如使用jQuery,它找不到
文档
)的其他东西时都会发生这种情况

我的实习生配置如下所示:

define([
  'intern!object',
  'intern/chai!expect',
  'bower_components/pact-consumer-js-dsl/dist/pact-consumer-js-dsl.js'
], function(registerSuite, expect) {
  registerSuite({
    name: 'Test',

    'login form': function() {
      var _this = this;

      return this.remote
        .get(loginUrl)
        ...
        .end();
    }
  });
});
define({

  proxyPort: 9999,

  proxyUrl: 'http://localhost:9999/',

  capabilities: {
    'selenium-version': '2.45.0'
  },

  environments: [
    { browserName: 'chrome' }
  ],

  tunnel: 'NullTunnel',

  maxConcurrency: 3,

  functionalSuites: ['test/intern/integration/login'],

  excludeInstrumentation: /^tests|bower_components|node_modules\//

});

如果有人知道这方面的解决方案,我将非常感激:)

您使用Pact库的确切目的是什么?功能测试套件本身不在浏览器上下文中运行,而是在节点中运行。加载到每个远程环境中的页面实际上是在浏览器上下文中加载的,并且可以访问DOM。这似乎就是问题所在。。。这两种情况。我们希望使用Pact在前端和后端之间签订合同,我们希望在功能测试中使用Pact来一举两得,因为我们希望在功能测试中使用模拟后端,而不是真正的后端。然后我们有一个不同的问题,那就是。。。我们如何在Intern的功能测试中模拟后端?如果Pact库不支持Node.js(
窗口未定义
),您打算如何在后端使用它?