Tah*_*aus 5 javascript angularjs protractor
我有一个Protractor测试,输入登录数据并单击登录按钮,我希望检查Angular变量的值.
单击元素的ng-click是doLogin(),它在控制器文件中定义为:
$scope.doLogin = function(){
console.log('login -- todo');
// remember email used
localStorageService.add('lastKeyEmail', $scope.data.login.key.email);
// todo - make dynamic
$scope.authentication.user = true;
// set email of logged in user
// todo: would need to be done in user service (set user details received from server)
Authentication.setEmail($scope.data.login.key.email);
// overwrite password in memory
$scope.data.login.password = "thispasswordisdeletedsoyoucantreadit";
};
Run Code Online (Sandbox Code Playgroud)
如何在$ scope.authentication.user的值上使用Protractor的expect()?
有一个函数调用evaluate,允许您评估给定元素的角度表达式.
选择要检查范围的DOM元素,然后调用evaluate.文档中有一个例子:
http://angular.github.io/protractor/#/api?view=ElementArrayFinder.prototype.evaluate
使用量角器,您可以执行端到端测试(例如,如果您是用户单击界面 - 按钮、锚点 - 并阅读呈现的内容 - 您决定最终向视图公开的内容),您无权访问到封装在控制器中的 JavaScript 变量。
您正在谈论的测试类型是单元测试,您只测试您的doLogin函数,方法是注入一个填充了正确数据的 $scope 对象,然后通过测试 js 变量断言它完全符合您的预期。
虽然,如果$scope.authentication.user在设置为时修改视图true(例如,如果您显示“身份验证成功”,甚至路由到其他视图),您可以使用量角器断言此行为已通过(通过检查 DOM 中的“身份验证成功”消息触发登录后) - 但请记住,这仍然是 e2e 测试。