我在我的一个JS文件中有以下代码.
// test/lib/UserHelper.js 'use strict'; var Firebase = require('firebase'); exports.createuser = function (email,password) { browser.executeAsyncScript(function (done) { var $firebaseSimpleLogin = angular.inject(['ng','firebase']).get('$firebaseSimpleLoging'); var firebaseRef = new Firebase('https://urltoapplication.firebaseio.com'); var auth = $firebaseSimpleLogin(firebaseRef); auth.$createuser(email,password); done(); }); };
我在我的测试中称之为:
// test/settings/company.spec.js 'use strict'; var user = require('../lib/UserHelper'); describe('company specs',function () { beforeEach(function () { user.createuser('test@test.com','test'); }); });
对user.createuser的调用(‘test@test.com’,’test’);在beforeEach回调失败,出现UnkNownError:未在auth.$createuser(email,password);中定义电子邮件.
为什么回调函数中无法访问电子邮件变量?是否可以传播传递给关闭函数的参数传递给createuser函数?
根据Andres D的回答,这对我有用.
exports.createuser = function (data) { browser.executeAsyncScript(function (data,done) { var $firebaseSimpleLogin = angular.inject(['ng','firebase']).get('$firebaseSimpleLoging'); var firebaseRef = new Firebase('https://urltoapplication.firebaseio.com'); var auth = $firebaseSimpleLogin(firebaseRef); auth.$createuser(data.email,data.password); done(); },data); };
解决方法
这是我在角度聚会期间使用的一个工作示例:
您只能将一个参数传递给executeAsyncScript.如果您需要传递多个值,我建议您传递一个对象:
module.exports = { create: function(data) { return browser.executeAsyncScript(function(data,callback) { var api = angular.injector(['ProtractorMeetupApp']).get('apiService'); api.member.save(data,function(newItem) { callback(newItem._id); }) },data); } }; create({email: 'sdf@sdf.com',password: 'sfd'}).then(function(response){ // Handle response here. })
https://github.com/andresdominguez/protractor-meetup/blob/master/test/e2e/api-helper.js#L12
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。