【问题标题】:How can I replace the server in Web Component Tester如何在 Web Component Tester 中更换服务器
【发布时间】:2015-11-03 18:51:30
【问题描述】:

我有一个基于 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。

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

【问题讨论】:

    标签: selenium polymer web-component-tester


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多