【发布时间】:2014-01-04 08:00:55
【问题描述】:
是否可以像在单元测试中那样在量角器测试中访问角度?
用例是我有一个转换文本的服务,我想访问该服务来转换实际测试脚本中的一些数据。我知道量角器中有addMockModule 方法,但我不知道如何将它用于此目的。
不胜感激!
【问题讨论】:
标签: javascript angularjs testing protractor
是否可以像在单元测试中那样在量角器测试中访问角度?
用例是我有一个转换文本的服务,我想访问该服务来转换实际测试脚本中的一些数据。我知道量角器中有addMockModule 方法,但我不知道如何将它用于此目的。
不胜感激!
【问题讨论】:
标签: javascript angularjs testing protractor
有一个函数叫做evaluate()。在 dom 中找到一个元素,然后运行表达式。
例如。如果您想计算http://angularjs.org/ 网站(在添加一些控件下)中的待办事项数量,请执行以下操作:
在量角器中打开元素浏览器
./node_modules/protractor/bin/elementexplorer.js
browser.get('http://angularjs.org/')
element(by.model('todoText')).evaluate('todos.length').
then(function(count) {
console.log(count)
});
它应该给你一个 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);
});
查看示例:https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js
【讨论】:
Unknown provider: $rootElementProvider 在根 DOM 元素(设置 ng-app 的位置)上使用 angular.element([DOM element]).injector().get('myService'); 来获取现有的注入器。