使用server.js和proxy.config.json使用Protractor模拟服务

时间:2019-05-07 13:12:38

标签: javascript angular typescript protractor angular-cli

我正在尝试使用server.js和proxy.config.json文件模拟服务,以便可以在量角器测试中使用该模拟服务。我要使用的方法是拥有这样的测试文件:

const server = require('server');
const { get, post } = server.router;
const { json } = server.reply;

server({ port: 3000 }, [
    get('/abc', ctx => { 
        return json({
            foo: "bar"
        })
    })
]);

以及类似的proxy.config.json文件:

{
    "/xyz": {
        "target": "http://localhost:3000/abc",
        "changeOrigin": true,
        "secure": false,
        "logLevel": "debug",
        "pathRewrite": {
            "^/xyz": ""
        }
    }
}

然后我通过致电运行测试

ng e2e --proxy-config proxy.config.json

但是,由于我的应用程序在http://localhost:49156中运行,而我希望模拟的服务在https://localhost:8443/xyz中运行,因此我并不成功。如果我想模拟和代理与应用程序相同的端口/协议(49156和HTTP)中的某些内容,我可以这样做,但是对于在端口8443和https中运行的服务我却不能。有人可以帮我弄这个吗?我究竟做错了什么? 谢谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

我终于能够通过这样创建一个environmentE2E.ts文件来解决最初的问题:

export const environment = {
  production: false,
  baseURL: 'http://localhost:49156'
};

在angular-cli.json文件中添加以下内容:

      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts",
        "e2e": "environments/environmentE2E.ts"  // Added only this line, the others were already there
      }

并使用以下命令调用测试:

ng e2e --proxy-config proxy.config.json --environment e2e

希望它对他人有帮助。 谢谢。