小编Dav*_*ski的帖子

如何将模拟服务注入过滤器的单元测试?

我有一个简单的angularjs过滤器(它需要一个id并将其转换为名称字符串),这取决于一个自定义服务来完成它的工作:

angular.module('app').filter('idToName',
  function(User) {
    return function(id) {
      var result, user;
      result = '';
      if (id) {
        result = 'no name found';
        user = User.getById(id);
        if (user) {
          result = user.firstName;
        }
      }
      return result;
    };
  }
);
Run Code Online (Sandbox Code Playgroud)

我想为它写一个单元测试.我希望能够在测试中注入用户服务的模拟.

我可以为控制器单元测试执行此操作,如文档中所示:

var mockUserService;

mockUserService = {
  getById: function(id) {
    return {
      firstName: 'Bob'
    };
  }
};

beforeEach(inject(function($rootScope, $controller) {
  var ctrl, scope, userService;
  userService = mockUserService;
  scope = $rootScope.$new();
  return ctrl = $controller('someController', {
    $scope: scope,
    User: userService
  });
}));
Run Code Online (Sandbox Code Playgroud)

但是在beforeEach中用$ filter替换$ …

javascript unit-testing mocking angularjs

9
推荐指数
1
解决办法
3860
查看次数

Angular UI select2,标签不在自定义指令内

使用Angular UI Select2指令,在输入字段上定义标记.如果输入本身在自定义指令中,则它未正确初始化并且控制台发出错误:

query function not defined for Select2 tagging

我怀疑这可能与指令编译/链接的顺序与调用select 2函数时的顺序有关.

也许有一个简单的解决方法,可能使用编译功能或指令控制器而不是链接功能?或者它可能是Angular UI select2指令的问题.

我做了一个显示问题的plunker:

http://plnkr.co/edit/myE5wZ

所以我的问题是 - 如何从自定义Angular指令中获取select2标签?

angularjs jquery-select2 angular-ui angularjs-directive

3
推荐指数
1
解决办法
4428
查看次数