2

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

该项目包括 php 服务器代码,我还想通过编写测试在浏览器中运行来进行测试,该浏览器将通过 Ajax 调用利用 PHP 服务器代码。

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

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

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

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

目前让我感到困惑的是在什么情况下运行它。似乎加载插件以某种方式做到了,但我从阅读代码中的理解是微不足道的。

4

1 回答 1

0

答案是 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 脚本的服务器。

于 2015-12-06T14:47:18.007 回答