Angular4业力代理通配符

时间:2017-05-24 21:06:52

标签: angular unit-testing proxy karma-runner

我在服务器myserver.com:4567/api上运行了我的api,我希望我的角应用程序的每个请求都与/ api / *匹配。我已经使用proxy-conf.json进行了设置,它非常适合投放。但是我想用业力测试我的应用程序,它似乎不接受代理的通配符。

如何在不为每个可能的终点提供业力的情况下解决这个问题

我想要这个:

proxies: {
  "/api/*": "http://mybackend.com:4567"
}

而不是:

proxies: {
  "/api/1": "http://mybackend.com:4567/api/1"
  "/api/2": "http://mybackend.com:4567/api/2"
  "/api/3": "http://mybackend.com:4567/api/3"
  "/api/4": "http://mybackend.com:4567/api/4"
}

1 个答案:

答案 0 :(得分:2)

正如您现在已经想到的那样,Karma不会为代理条目提供通配符。但是,当我们看一下如何完成代理时,事实证明你可以使用每个端点的文件和一个代理条目伪造你的端点:

proxies: { "/api": "/base/fake-api" }

然后你有一个包含内容的fake-api文件夹,如下所示:

  • 假-API
    • 一些-其他路线
      • 另一结果-1
      • 另一结果-2
    • 1
    • 2
    • 3
    • 4

我有子文件夹文件,其中包含我想从api中伪造的结果。我在一个项目中一直在做这件事来克服同样的问题。您还需要一个类似的文件条目:

files:[ ... { pattern: "fake-api/**/*", included: false, served: true, watched: false }, ... ],

(您可能需要调整路径以适合您所需的布局;例如,我的s​​pecs文件夹下有 fake-api ,所以 fake-api 上面的路径部分在我的项目中实际上是 specs / fake-api ,但是你得到了图片。)