如何替换 Web Component Tester 中的服务器

How can I replace the server in Web Component Tester

我有一个基于 Polymer Starter Kit 的项目,其中包括 Web-Component-Tester

该项目包括 php 服务器代码,我还想通过在浏览器中向 运行 编写测试来测试,浏览器将通过 [=28= 使用 PHP 服务器代码] 来电。

这意味着替换 Web Component Tester 仅在测试服务器端代码时使用的服务器。我希望为此做一个单独的 gulp 任务。

不幸的是,我不了解 WCT、Selenium 和当前服务器 运行 之间的关系。我可以看到 WCT 命令启动了 Selenium,但我无法找出 Web 服务器是什么以及它是如何启动的。我怀疑它是 WCT,因为有目录映射到 urls 的配置,但除此之外我没有任何线索,尽管我试图阅读代码。

有人可以解释一下我是如何在测试客户端时使其 运行 成为自己的服务器,但在 运行 连接服务器时依赖于已经设置好的 Web 服务器 (nginx) 的。我可以从本地主机或其他域将 nginx 设置为 运行,如果这是选择不同配置的一种方式。

编辑:我现在发现 runner/webserver.js 启动了一个快速服务器,并且 urls 被映射,因此测试 运行ner 和 bower_components 目录都映射到 /components url.

目前让我困惑的是在什么情况下会出现这种情况运行。加载插件似乎以某种方式做到了,但我阅读代码的理解是脆弱的。

答案是web组件测试器本身在runner/config.js文件中有注释。

wct-conf.js 中,您可以在返回的对象中使用 registerHooks 键来添加执行

的函数
  registerHooks: function(wct) {
    wct.hook('prepare:webserver', function(app, done) {
      var proxy = require('express-http-proxy');
      app.use('/api',
        proxy('pas.dev', {
          forwardPath: function(req, res) {
            return require('url').parse(req.url).path;
          }
        })
      );
      done();
    });

这个注册钩子函数允许你提供一个路由(在我的例子中是/api),这个路由代理到一个服务器,这个服务器可以运行 php 脚本。