- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个非常大的模块化网络应用程序。其中前端是使用 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/
为什么 TensorFlow 给我运行时错误(在标题中)? 我正在使用 WinPython3.5.4.2 并安装了 TensorFlow 1.8.0。我一直在关注 https://www.tensor
我在我的 map 上对图钉使用 MVVM-light 方法。 我已将 Tapped Event 绑定(bind)到 ViewModel 中的命令。 然而,事件没有被触发。 所有其他命令和属性都完美绑定
我刚开始使用 TAPE JS 进行测试。我已经完成所有设置并正常工作,并且在常规测试中工作得很好。但我正在尝试测试一种独特的基于 REST API 的产品,该产品依赖于在下一次调用获得成功调用所需的信
看了Tensorflow开发者的峰会视频Eager Execution in Tensorflow,主持人介绍了“渐变胶带”。现在我了解到梯度磁带跟踪 TF 模型中发生的自动微分。 我试图理解为什么我
我正在尝试测试使用 Tape 调用 API 的异步函数,但我似乎不太走运。我以前用过 Mocha/Chai 和 Jasmine,但我不确定如何在这里做我想做的事。 这是我要测试的功能 const lo
我想弄清楚为什么有时 tf.GradientTape().gradient 会返回 None ,所以我使用了以下三个损失函数( mmd0() 、 mmd1() 、 mmd2() ),尽管格式和 mms
我正在尝试为我的传单插件实现单元测试,我当前的选择是使用磁带。不幸的是,一旦我在测试中需要传单: var L = require('leaflet'); var test = require('tap
在 Node js 中使用磁带模拟单元测试中的方法的方法是什么?我在自述文件中没有找到任何内容。我对 Node js 很陌生,所以这个问题对某些人来说似乎很简单。 请提供一些建议。 最佳答案 tape
我可以使用 TapGestureRecognizer 检查点击开始和结束的时间吗? 最佳答案 TapGestureRecognizer 已经存在几年了,不幸的是,它仍然非常有限(意味着只能识别完全点击
我正在创建一个游戏,我试图在两侧的风景变化很大的情况下做一个效果,我没有使用 sprite 套件或任何东西,只是 UIKit,因为它是一个简单的游戏。基本上我有一个 png,它是 iPhone 5 屏
我目前正在开发一个非常大的模块化网络应用程序。其中前端是使用 AngularJS 1.x 实现的。该项目已有大约 2 年历史,并且在开发过程中从未进行过任何单元测试。现在需要为至少 85% 的 Ang
我有一个问题,当用户单击标注时,CalloutAccessoryControlTapped 永远不会被调用。这在 Apple map 中是否已删除或更改? 在 iOS 5 中,我的调用如下所示: (图
我正在使用 Python 3.6.2 和 Bokeh 1.0.4 在我的绘图中创建自定义 JavaScript 回调。 通过点击图中的一个点,我希望突出显示 id 列中共享相同属性的所有点。 使用 J
假设我有以下 React组件: import React from 'react' import AppBar from 'material-ui/lib/app-bar' class NavBar
我正在调试第三方库单元测试。测试用例正在使用磁带和磁带运行来运行。它使用以下命令来运行测试用例。 "test": "browserify -x react-native -x react/addons
Square有个开源项目名称Tape http://square.github.io/tape/实现持久文件支持队列。所有示例似乎都表明可以从主线程将对象添加到队列中。然而,android 的所有其他
在具有嵌入层和 SimpleRNN 层的模型中,我想为每个步骤 t 计算偏导数 dh_t/dh_0。 我的模型结构,包括导入和数据预处理。 有毒评论列车数据可用:https://www.kaggle.
我一直在尝试使用 Tape 测试我的 ES6 代码断言和Nightmare.js加载测试页。我一直在尝试不同的 ES6 方法:async/await、yield、generators,我认为我有点超出
我有一个 ListView,其中有两个事件“ItemTapped”和“ItemSelected”,当用户选择该项目时,应该出现警报“您选择的项目”,当用户点击该项目时,应该出现警报“您点击了项目”出现
我有一个 ListView,其中有两个事件“ItemTapped”和“ItemSelected”,当用户选择该项目时,应该出现警报“您选择的项目”,当用户点击该项目时,应该出现警报“您点击了项目”出现
我是一名优秀的程序员,十分优秀!