Jasmine 不适用于文档点击的 link 指令

Jasmine not working for link directive on document click

我的指令 Link 功能如下 -

link:function(scope,elem,attr){
            $(document).on("click",function(event){
                var target = $(event.target);
                if(target.is('.detailBox') || target.closest('.detailBox').length){
                    return;
                }
                scope.$emit('closeDetailBox');
                scope.$apply();
            });
        }

下面给出了我用于测试 emit 的 jasmine TC -

it('Some other box click', function () {
            spyOn($rootScope, '$emit');
            var theboxelement = '<button class="thebox"></button>';
            var thebox = $(theboxelement);
            $('body').append(thebox);
            var spyEvent = spyOnEvent('.thebox', 'click');

            thebox.trigger("click");
            expect($rootScope.$emit).toHaveBeenCalledWith('closeDetailBox',theboxelement);
            thebox.remove();
        });

emit 事件本应被触发并捕获,但从未被触发。我收到错误 - "Expected spy $emit to have been called with [ 'closeDetailBox', '' ] but it was never called."

我已经处理这个问题 2 天了,无法修复,请帮助!

根据您的指令,您的事件是从您的指令范围内发出的。您确定这会触发 $rootScope 的 $emit 函数吗?

也许你应该在 $rootScope 上使用 $broadcast ?

根据您的代码,我认为您需要调用 link 函数。然后做剩下的。像 mydirective.link();这将解决您进行的以下函数调用。

如果上述方法不起作用,您可能可以检查以下项目 -

查看您的模块依赖项是否正确解析。

利用本地茉莉花调试。这可能是检查流量的最简单方法。