繁体   English   中英

Angular中的单元测试

[英]Unit testing in Angular

据我了解,不建议使用Scenario-runner。 因此,现在您将在Karma中运行单元测试,并在Protractor中运行e2e测试。

对我来说,启动用于运行单元测试的浏览器(karma)感觉不对。 我的假设正确吗? 您如何测试Angular应用程序?

在测试角度时,一个相当好的实践标准是使用phantomjs无头浏览器进行单元测试。 无论您以哪种方式查看它,都需要启动并运行JavaScript引擎,然后才能进行测试。 但是,由于没有UI,因此使用无头浏览器要快得多。

我使用Karma,chai和sinon(用于模拟)-我的开发工作流程使用phantomjs,然后我的CI和发布版本使用实际的浏览器IE,Chrome等运行CI构建时也使用BrowserStack。

您可以在此处查看测试示例和业力配置

您可能需要查看grunt / gulp才能实际管理测试过程。

您对测试有什么特别的追求吗?

如果您想知道您的应用在不同浏览器中的表现,则需要在这些浏览器中运行它。 不同的浏览器具有不同的DOM实现,JavaScript版本和功能等。

例如,如果您要在Chrome或PhantomJS中运行以下代码,则可以正常运行,但在IE8中,它将失败:

var arr = [1, 2, 3]

arr.forEach(function(item) {
  console.log(item);
});

forEach在IE8中不可用,但在Chrome中可用。 针对IE8运行代码的单元测试可能会发现这一点,而针对PhantomJS的单元测试则不会发现这一点。

...因此,如果您想在开发周期中运行诸如PhantomJS之类的“无头”工具,那很好,但是请务必确保正在测试构建时关心的所有浏览器(希望使用CI)

我真的不喜欢每次运行Karma时都启动Chrome,因此我改用了PhantomJS,它“安静”地工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM