【问题标题】:Angular4 karma proxy wildcardAngular4 业力代理通配符
【发布时间】:2017-05-24 21:06:52
【问题描述】:

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

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

我想要这个:

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"
}

【问题讨论】:

    标签: angular unit-testing proxy karma-runner


    【解决方案1】:

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

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

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

    • 假API
      • 其他路线
        • other-result-1
        • other-result-2
      • 1
      • 2
      • 3
      • 4

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

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

    (您可能需要调整路径以适应您想要的布局;例如,我的 fake-api 在我的规范文件夹下,所以所有 fake-api 上面的路径部分实际上是我的项目中的 specs/fake-api,但你明白了)。

    【讨论】:

    • 谢谢,这有点好,但理想情况下我想用实际的后端(测试后端)进行测试,而不是保留每个请求的副本。
    猜你喜欢
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多