gpt4 book ai didi

javascript - AngularJS 1.x 和 Tape JS

转载 作者:行者123 更新时间:2023-11-28 05:13:36 26 4
gpt4 key购买 nike

我目前正在开发一个非常大的模块化网络应用程序。其中前端是使用 AngularJS 1.x 实现的。该项目已有大约 2 年历史,并且在开发过程中从未进行过任何单元测试。现在需要为至少 85% 的 Angular 代码库添加单元测试。普遍的共识似乎是:“使用 Jasmine/Karma 或 Mocha/Chai/Sinon”进行单元测试。

在查看了常用的测试库后,我担心的是一般数据模拟和单元测试需要投入的工作量。这似乎太过分了,几乎和重新开发应用程序一样糟糕。最近,我还阅读了几篇关于使用 Jasmine 等复杂测试库进行单元测试的一般开销的文章(请参阅: https://medium.com/javascript-scene/why-i-use-tape-instead-of-mocha-so-should-you-6aa105d8eaf4#.1bzhv0q1f )

关于使用 Tape JS 进行测试的部分让我想知道这在 Angular 1.x 中是否可以轻松完成。我对单元测试非常陌生,想知道是否有人使用 Tape 和 Angular 1.x 进行过单元测试?这可能吗?

对于 Tape 的优点/缺点/经验以及 Angular 中的一般单元测试的想法,我们将不胜感激。

谢谢。

最佳答案

跟进我的评论。

我认为每个人使用 Jasmine 的原因是他们想通过 AngularJS 接口(interface)测试他们的代码,而这需要一个测试工具。

例如 - 假设您正在为组件编写测试。您必须引导组件的 angular.module。您还必须通过 $componentController 创建组件 Controller 的实例。如果 Controller 需要任何依赖项,您必须确保这些依赖项也已引导其 angular.module。

Jasmine 做这一切都很棒。

但是,Jasmine 很快就会变得笨拙。它引入了各种全局变量。 BeforeEach 涉及大量重复。要运行测试,您可能必须使用 Karma,它需要大量依赖项,而且速度非常慢。

我认为,如果您可以将代码作为普通的旧 JavaScript 进行测试,那么您可以跳过所有这些,只使用 TapeJS。我认为这种方法对于单元测试来说是可以的——但是对于 e2e 测试,你应该深入研究 jasmine/protractor。

例如,我的 AngularJS 应用程序是使用类语法用 Typescript 编写的。每个组件 Controller 和服务都是一个同样被导出的 typescript 类。因此,要使用 TypeJS 进行测试,您所要做的就是导入 typescript 类,创建它的实例,然后瞧。您现在可以访问所有方法(假设它们都是公共(public)的),并且可以测试输入/输出是否按预期工作。

这对于 AngularJS 1.5+ 来说应该可以正常工作,但是如果你的应用程序包含很多指令,我不确定这会如何工作。

我希望这会有所帮助。花几天时间试图让测试运行者工作是最糟糕的。

了解更多:

https://ponyfoo.com/articles/testing-javascript-modules-with-tape

关于javascript - AngularJS 1.x 和 Tape JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com