我的 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/