如何从量角器调用角度分量测试?

时间:2019-05-03 22:32:52

标签: angular protractor

我有一个通过ng CLI生成的原始Angular7项目,其中有一个我要测试的组件:src/app/mini-cal/mini-cal.component.spec.ts

我不知道有什么方法可以要求angular cli工具为我完成此操作,以下组合失败

ng test --specs='src/app/mini-cal/mini-cal.component.spec.ts'
ng test -- --specs='src/app/mini-cal/mini-cal.component.spec.ts'

所以我决定像这样指向protractor

protractor e2e/protractor.conf.js --specs='src/app/mini-cal/mini-cal.component.spec.ts'

用来获取感兴趣的文件,但缺少以下附加配置:

  • 区域

    - Failed: Zone is needed for the async() test helper
              but could not be found. Please make sure
              that your environment includes
              zone.js/dist/zone.js
    
  • 测试台初始化
    - Failed: Cannot read property 'injector' of null
    

通常,所有这些内容都可以在src/test.ts中使用,并由ng test自动使用...但是现在我要通过protractor开始该过程,我需要将其合并到e2e/protractor.conf.js文件的onPrepare()方法。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

由于您正在测试单个组件,因此我相信您正在尝试编写和运行单元测试,而不是e2e(端对端)测试。单元测试通常仅测试一个小型单元(如组件,服务或功能),并且有针对性地确定其范围,以确保该单元能够完成预期的工作,而不必担心如何实现外部单元。端到端测试(我从来没有写过一个,如果我错了就不要纠正我)会启动整个应用程序并与之交互,以测试单元是否可以正常工作(考虑测试整个页面,多个页面)。  组件进行交互,导航等)。

Angular CLI使用Karma测试运行程序在浏览器环境中运行单元测试,并使用Protractor进行e2e测试(我不知道Protractor如何运行测试的细节。)请参见Angular's Testing Guide。因此,ng test运行业力,ng e2e运行量角器。两种类型的测试都使用Jasmine作为实际编写测试代码的测试框架。

看来其他人都在为运行单个单元测试而苦苦挣扎。通过将Jasmine的集中测试功能更改为itdescribe,可以使用它们来显示单个fitfdescribe块的输出。但这并不会阻止其他测试文件中的代码被编译或加载,只是使其他describeit块无法运行。您可以看到How to execute only one test spec with angular-cli做其他事情的尝试。

我很高兴在所有的React测试中都使用Jest,并且我相信Jest可以提供更好的测试运行体验(能够通过模式匹配来运行特定的测试,只能在git工作副本中以更改的文件运行,能够以交互式监视方式运行,更新快照等)。您可以查看Jest cli options以了解如何仅运行特定的测试。 Jest既是测试框架(很大程度上是Jasmine语法的副本)又是测试运行器。 Jest可以使用jsdom或节点来运行测试,而无需运行真正的浏览器。看起来Karma现在也可能也对jsdom有所支持...

如果您想走Jest路线,使用Jest Angular Schematic似乎是将Jest添加到Angular项目中的最简单方法,并且有一个相应的article