189 8069 5689

怎么在AngularCLI中进行单元测试-创新互联

怎么在Angular CLI中进行单元测试?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,10多年企业及个人网站建设经验 ,为成都上千余家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,品牌网站制作,同时也为不同行业的客户提供成都网站设计、网站制作的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选成都创新互联

单元测试.

angular cli使用karma进行单元测试.

首先执行ng test --help或者ng test -h查看帮助.

执行测试的话就执行ng test即可, 它会执行项目里所有的.spec.ts文件.

而且它还会检测文件的变化, 如果文件有变化, 那么它会重新执行测试.

它应该在单独的终端进程中执行.

首先创建一个angular项目, 带路由的:

ng new sales --routing

创建好项目后, 直接执行命令测试:

ng test

怎么在Angular CLI中进行单元测试

然后会弹出一个页面, 就是测试的结果数据.

下面我再添加几个components 和 一个 admin module:

ng g c person
ng g c order
ng g m admin --routing
ng g c admin/user
ng g c admin/email

然后配置一下路由, 最重要得到这个效果:

怎么在Angular CLI中进行单元测试

这时我重新执行一下ng test:

怎么在Angular CLI中进行单元测试

尽管程序运行没有问题, 但是测试还是出现了问题: router-outlet is not an angular component.

可以看一下spec list:

怎么在Angular CLI中进行单元测试

怎么在Angular CLI中进行单元测试

这时因为运行测试的时候, admin模块是独立运行的, 所以该模块并没有引用Router模块, 所以无法识别router-outlet.

那么如何解决这个问题?

打开admin.component.spec.ts:

怎么在Angular CLI中进行单元测试

把这句话填上, 然后就没有错误了:

怎么在Angular CLI中进行单元测试

NO_ERRORS_SCHEMA告诉angular忽略那些不识别的元素或者元素属性.

  1. --code-coverage -cc 代码覆盖率报告, 默认这个是不开启的, 因为生成报告的速度还是比较慢的.

  2. --colors 输出结果使用各种颜色 默认开启

  3. --single-run -sr 执行测试, 但是不检测文件变化 默认不开启

  4. --progress 把测试的过程输出到控制台 默认开启

  5. --sourcemaps -sm 生成sourcemaps 默认开启

  6. --watch -w 运行测试一次, 并且检测变化 默认开启 

ng test 就是运行测试, 并且如果文件有变化, 就会重新运行测试.

使用ng test -sr或者ng test -w false 执行单次测试

测试代码覆盖率:

ng test --cc 的报告默认是生成在/coverage文件夹下, 但是可以通过修改.angular-cli.json里面的属性进行修改.

下面生成代码覆盖率报告:

ng test -sr -cc

通常是配合-sr参数使用的(运行一次测试).

然后会在项目的coverage文件夹里生成一些文件:

怎么在Angular CLI中进行单元测试

直接打开index.html:

怎么在Angular CLI中进行单元测试

可以看到都是100%, 这是因为我没有写任何代码.

然后我在user component里面添加一些代码:

怎么在Angular CLI中进行单元测试

再运行一次 ng test --sr -cc:

怎么在Angular CLI中进行单元测试

怎么在Angular CLI中进行单元测试

可以看到这部分代码并没有覆盖到.

如果我把代码里到 canGetUsers改为true:

怎么在Angular CLI中进行单元测试

再次执行ng test --sr -cc

可以看到这次代码覆盖率变化了:

怎么在Angular CLI中进行单元测试

只有catch部分没有覆盖到.

我认为代码覆盖率这个内置功能是非常好的.

Debug单元测试.

首先执行ng test:

怎么在Angular CLI中进行单元测试

然后点击debug, 并打开开发者工具:

怎么在Angular CLI中进行单元测试

然后按cmd+p:

找到需要调试的文件:

怎么在Angular CLI中进行单元测试

设置断点:

怎么在Angular CLI中进行单元测试

然后在spec里面也设置一个断点:

怎么在Angular CLI中进行单元测试

最后点击浏览器的刷新按钮即可:

怎么在Angular CLI中进行单元测试

E2E测试的参数.

实际上angular cli是配合着protractor来进行这个测试的.

它的命令是 ng e2e.

常用的参数有:

  1. --config -c 指定配置文件 默认是 protractor.conf.js

  2. --element-explorer -ee 打开protractor的元素浏览器

  3. --serve -s 在随机的端口编译和serve 默认true

  4. --specs -sp 默认是执行所有的spec文件, 如果想执行某个spec就使用这个参数, 默认是all

  5. --webdriver-update -wu 尝试更新webdriver 默认true

通常执行下面机组命令参数组合即可:

ng e2e
ng e2e -ee

Debug E2E测试.

看一下项目:

怎么在Angular CLI中进行单元测试

配置文件protractor.conf.js已经配置好.

而测试文件是在e2e目录下.

看一下spec和po文件:

怎么在Angular CLI中进行单元测试

怎么在Angular CLI中进行单元测试

再看一下app.component.html里面的值:

怎么在Angular CLI中进行单元测试

应该是没问题的.

所以执行ng e2e:

怎么在Angular CLI中进行单元测试

测试通过, 但是浏览器闪了一下就关闭了.

如果我想debug e2e, 那么执行这个命令:

ng e2e -ee

由于我使用的是mac, 当前这个命令在mac上貌似确实有一个bug:

怎么在Angular CLI中进行单元测试

关于怎么在Angular CLI中进行单元测试问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联成都网站设计公司行业资讯频道了解更多相关知识。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:怎么在AngularCLI中进行单元测试-创新互联
分享URL:http://jkwzsj.com/article/gojce.html

其他资讯