我想在我的控制器中测试一段代码:
$scope.fbLogin = function() {
console.log('Start FB login');
facebookConnectPlugin.login(["public_profile", "email", "user_friends"], FacebookServices.fbLoginSuccess, FacebookServices.fbLoginFailure);
};不需要将facebookConnectPlugin注入控制器。只要我做cordova plugin add cordova-plugin-facebook4,facebookConnectPlugin就可以在全球范围内使用。
在单元测试中,facebookConnectPlugin是不可用的,因为它不需要注入,所以$provide.value()方法不再有魔力了。
下面是错误(在源代码和规范上都有抱怨):
ReferenceError: facebookConnectPlugin没有定义在Scope.$scope.fbLogin (/app/注册登录/控制器):is :9:6120) ReferenceError: facebookConnectPlugin不是在对象处定义的。(/app/注册登录/注册-93:93:9)
有人能给我一些启发吗?我可以在单元测试环境中模拟这个插件并提供它吗?
发布于 2016-12-20 18:12:24
也有同样的问题。解决了这个问题,包括文件数组中的globals.js文件在karma.config.js上。然后在globals.js中我创建了一个facebookConenctPlugin全局。结尾是这样的:
globals.js
facebookConnectPlugin = {
login: function(){...},
logout: function(){...}
};在karma.config.js中
// Karma configuration
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'www/assets/lib/angular/angular.js',
'node_modules/jquery/dist/jquery.min.js',
'node_modules/jasmine-jquery/lib/jasmine-jquery.js',
'node_modules/angular-mocks/angular-mocks.js',
...
//// MOCK GLOBALS ///////////////////
'test/mocks/globals.js',
/////////////////////////////////////
...
],
...
};https://stackoverflow.com/questions/40119145
复制相似问题