在角度测量仪测试中访问角度

wli*_*gke 29 javascript testing angularjs protractor

是否可以像在单元测试中那样在量角器测试中访问角度?

用例是我有一个转换文本的服务,我想访问该服务来转换实际测试脚本中的一些数据.我知道addMockModule量角器中有方法,但我无法弄清楚如何将它用于此目的.

非常感谢任何帮助!

And*_*s D 37

有一个名为evaluate()的函数.在dom中查找元素,然后运行表达式.

例如.如果你想计算http://angularjs.org/网站上的待办事项数量(在Add Some Control下),请执行以下操作:

在量角器中打开元素资源管理器

./node_modules/protractor/bin/elementexplorer.js
browser.get('http://angularjs.org/')
element(by.model('todoText')).evaluate('todos.length').
  then(function(count) {
    console.log(count)
  });
Run Code Online (Sandbox Code Playgroud)

它应该给你一个2

您还可以使用executeAsyncScript

browser.executeAsyncScript(function(callback) {
  // Here we use document.body, but your app may live under a different
  // element.
  var service = angular.element(document.body)
      .injector()
      .get('myService');
  service.query({}, function(data) {
    callback(data);
  });
}).then(function (output) {
  console.log(output);
});
Run Code Online (Sandbox Code Playgroud)

查看示例:https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js

  • 请注意,第二个变体实际上**创建了一个新的注入器.这可能导致错误,如:`未知提供者:$ rootElementProvider`使用``angular.element([DOM element]).injector().get('myService');``在根DOM元素上(其中ng -app已设置)以获取现有注入器. (3认同)
  • 在e2e测试中访问除了视图之外的任何东西是不错的做法? (2认同)