首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在AngularJS指令测试中模拟单击事件?

如何在AngularJS指令测试中模拟单击事件?
EN

Stack Overflow用户
提问于 2013-06-20 18:36:44
回答 6查看 55.6K关注 0票数 49

对于我编写的指令,我尝试遵循ng-directive-testing代码库的格式。该指令基本上是在用户单击某个元素时呈现一个覆盖。以下是指令(简化):

代码语言:javascript
运行
复制
mod.directive('uiCopyLinkDialog', function(){
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var $elm = angular.element(element);
            element.bind('click', function(event) {
                $elm.addClass('test');
            });
        }
    };
});

我正在编写的测试如下所示:

代码语言:javascript
运行
复制
describe('pre-compiled link', function () {

    beforeEach(mocks.inject(function($compile, $rootScope) {
        scope = $rootScope;
        element = angular.element('<span class="foo" ui-copy-link-dialog="url"></span>');
        $compile(element)(scope);
        scope.$digest();
    }));

    it("should change the class when clicked", function () {
        element.click(); // this returns "'undefined' is not a function"
        element[0].click(); // so does this
        $(elm).click(); // this uses jquery and doesn't *seem* to fail
        waits(500); // hack to see if it was a race condition
        expect(elm.className).toContain('test'); // always fails
    });

});

您可以在测试中看到,我尝试了几种方法来触发链接上的click()事件,其中大多数都给出了undefined错误。

有人能告诉我我哪里做错了吗?阅读示例,这听起来像是正确的语法,但我的测试运行程序(Karma via Grunt)不想玩球。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17211466

复制
相关文章

相似问题

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