Angular4 karma 代理通配符

标签 angular unit-testing proxy karma-runner

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

如何在不提供 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"
}

最佳答案

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

代理:{ "/api": "/base/fake-api" }

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

  • 伪造的 api
    • 其他路线
      • other-result-1
      • other-result-2
    • 1
    • 2
    • 3
    • 4

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

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

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

关于Angular4 karma 代理通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168471/

相关文章:

node.js - 如何使用node正确创建HTTPS透明代理服务器?

typescript - 当用户登录(auth 不为 null )时,如何在 AngularFire2 中获取对象?

java - 为什么 Intellij 单元测试 View 显示的运行时间比运行测试的实际挂钟时间短得多?

docker - 来自守护进程 : Get https://registry-1. docker.io/v2/的错误响应:禁止

android - 如何在 Android Studio 中一键运行所有(单元和检测)测试

c# - 测试私有(private)静态方法抛出 MissingMethodException

windows - 我如何在本地拦截和响应浏览器请求?

javascript - 新的 Angular CLI 项目在 Internet Explorer 上失败

angular - 在 angular 2/angular 4 中集成 recaptcha

javascript - 在主线程上创建Imagebitmap?