在角度测试期间反向代理配置Karma

Raj*_*ajV 9 karma-runner angular

我的应用程序调用后端Web服务.在开发期间,我为Angular CLI服务器配置反向代理,一切正常.

ng serve --proxy-config proxy.config.json
Run Code Online (Sandbox Code Playgroud)

我需要在单元测试期间为Karma做同样的事情.我加上这个karma.conf.js.

proxies: {
  "/books":"http://localhost:3000/",
  "/books/*":"http://localhost:3000/",
}
Run Code Online (Sandbox Code Playgroud)

这些都不起作用.我的电话总是得到404.但是,如果我配置了一个完整的URL,它就可以了.

proxies: {
  "/books/167":"http://localhost:3000/books/167"
}
Run Code Online (Sandbox Code Playgroud)

如何使用通配符正确配置反向代理?

and*_*bin 4

您不应该在单元测试中使用后端。顾名思义,它是关于单元测试的。您测试的单元(例如服务或组件)的依赖关系应该被模拟。这样,真正的http服务将不会被调用,只会调用具有相同功能的模拟(例如Observable),因此只会测试该单元,并且测试不会因为依赖关系而失败。

仅在 e2e 测试中需要代理,因为它测试整个应用程序。测试从脚本e2e继承选项。--proxy-configserve

例子:

  • 我的问题不是关于我是否应该在单元测试中使用后端。我完全意识到我应该在单元测试期间尝试模拟服务。但在现实生活中,并不总是可以模拟所有情况下的每个调用。这就是为什么我问了一个具体问题。 (4认同)