jasmine - AngularJS 测试 : Protractor, Yeoman 应用程序中的 Karma、Jasmine

标签 jasmine protractor karma-runner e2e-testing

我使用这个 yeoman 生成器: https://github.com/Swiip/generator-gulp-angular

它安装了三个测试应用程序:Jasmine、Karma、Protractor 根据这篇文章( Should I be using Protractor or Karma for my end-to-end testing? ),我应该使用:Karma 进行小型测试,例如单个 Controller 。如果我想测试整个应用程序并模拟用户浏览我的应用程序,则使用 Protactor。根据此博客 ( http://andyshora.com/unit-testing-best-practices-angularjs.html ),我将使用 Jasmine 进行单元测试,使用 Karma 进行端到端集成测试。

我猜 Jasmine 是编写测试而其他两种执行代码的语言,对吗?另外,如果我从未编写过测试,那么首先学习/关注哪个更重要?

最佳答案

Karma 是一个测试运行程序,因此它运行您的测试。 Jasmine是让你编写测试的框架

在我看来,在 Angularjs 中你:

  • 必须对服务进行单元测试,因为您的业务代码就在那里。
  • 应该对 Controller 进行单元测试,因为用户操作就在那里。
  • 可以对自定义指令进行单元测试(如果您打算与其他人共享该指令,则必须)

Protractor 专为 E2E 测试而设计(像真实用户一样测试导航)。 它将 WebDriverJS 与 Jasmine 结合起来,让您可以使用 Jasmine 语法编写端到端测试(模拟真实的浏览器并采取真实的操作)。

这种测试在网络应用程序中也非常重要。

您不应该测试所有内容,尤其是在项目开始时,此类测试通常需要高水平的维护(即,当您更改屏幕时,您可能必须更改测试)。

我所做的是测试关键路径和功能。 我制作了一个阅读应用程序,所以就我而言,它是登录、注册、付款、访问图书和访问阅读器。

关于jasmine - AngularJS 测试 : Protractor, Yeoman 应用程序中的 Karma、Jasmine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234077/

相关文章:

angular - 测试在构造函数上使用 observable 的方法

javascript - 在 Jasmine 测试中将对 console.log() 的调用重定向到标准输出

javascript - 如何在 Protractor 中将一个 js 文件中的 2 个不同函数导出到另一个 Js 文件中

javascript - 失败 : Cannot read property 'all' of undefined

javascript - Karma 在 Chrome 中打开了 3 次。 karma 虫?

javascript - Jasmine spy 期望用 "Object(...)"调用

javascript - 在 Angular 单元测试中从 HTML 获取 routerLink 属性

javascript - 如何通过匹配文本来选择下拉选项?

angularjs - 如何模拟 $window 来单元测试 AngularJS 服务?

Angular 5 : Karma Unit testing fails to start HeadlessChrome on CI environment