首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单元测试中模拟Cordova插件

在单元测试中模拟Cordova插件
EN

Stack Overflow用户
提问于 2016-10-18 22:30:08
回答 1查看 1.5K关注 0票数 2

我想在我的控制器中测试一段代码:

代码语言:javascript
复制
$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-facebook4facebookConnectPlugin就可以在全球范围内使用。

在单元测试中,facebookConnectPlugin是不可用的,因为它不需要注入,所以$provide.value()方法不再有魔力了。

下面是错误(在源代码和规范上都有抱怨):

ReferenceError: facebookConnectPlugin没有定义在Scope.$scope.fbLogin (/app/注册登录/控制器):is :9:6120) ReferenceError: facebookConnectPlugin不是在对象处定义的。(/app/注册登录/注册-93:93:9)

有人能给我一些启发吗?我可以在单元测试环境中模拟这个插件并提供它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 18:12:24

也有同样的问题。解决了这个问题,包括文件数组中的globals.js文件在karma.config.js上。然后在globals.js中我创建了一个facebookConenctPlugin全局。结尾是这样的:

globals.js

代码语言:javascript
复制
facebookConnectPlugin = {
  login: function(){...},
  logout: function(){...}
};

karma.config.js

代码语言:javascript
复制
// 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',
      /////////////////////////////////////
      ...
    ],
    ...
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40119145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档