如何测试角度服务人员

时间:2019-12-20 13:43:26

标签: angular jasmine karma-jasmine service-worker progressive-web-apps

我正在app.component.ts中注册我的角度服务工作者(来自@ angular / PWA)。我无法确定如何在ngsw-worker.js中注册app.component.spec.ts。作为生产版本的一部分,它位于dist文件夹中(仅适用于--prod)。我在测试文件中的导入如下所示:

ServiceWorkerModule.register('ngsw-worker.js', { enabled: true }),

错误消息: Failed to register a ServiceWorker for scope ('http://localhost:<port>/') with script ('http://localhost:<port>/ngsw-worker.js'): A bad HTTP response code (404) was received when fetching the script.

ng test似乎没有包含--prod选项

由于它是ngsw-worker,因此在安装过程中使用this.scope.skipWaiting(),在激活过程中使用yield this.scope.clients.claim(),因此似乎在单元测试中正确注册sw应该可以解决问题。

我已经浏览了devtools中的localhost目录,但是在任何地方都看不到sw。

问题:鉴于以上所述,如何注册ngsw-worker.js以进行测试?

2 个答案:

答案 0 :(得分:0)

首先构建产品,然后运行

http-server -p 8080 -c-1 dist/your-projectname

并打开隐身标签,然后转到

localhost:8080

并测试您的服务人员

答案 1 :(得分:0)

更加精确

您必须首先下载http-server,它是“简单的,零配置的命令行http服务器”。

  1. 在全局npm install --global http-server的笔记本电脑上安装http服务器
  2. 在本地ng build --prod构建项目
  3. 运行http服务器http-server -p 8080 -c-1 dist/<project-name> -c-1 =禁用缓存
  4. 然后使用该网址http://localhost:8080/以隐身模式打开浏览器

有关它的更多信息:https://angular.io/guide/service-worker-getting-started#serving-with-http-server