首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular.js:测试点击指令

Angular.js:测试点击指令
EN

Stack Overflow用户
提问于 2014-05-23 21:54:05
回答 1查看 1K关注 0票数 0

我有一个Angular.js指令,我正试图为它写一个测试。基本上,它是checkbox的包装器,比如当单击包装器时,checkbox的状态就会改变。问题是我不知道如何在单元测试中复制这种行为。我的测试是这样的:

代码语言:javascript
复制
describe('Checkbox field', function() {
var elm, scope;

    beforeEach(module('MyApp'));
    beforeEach(module('app/partials/checkboxfield.html'));

    beforeEach(inject(function($rootScope, $compile) {
        elm = angular.element(
          '<checkboxfield data="data" model="value"></checkboxfield>');
        scope = $rootScope;
        scope.value = false;
        $compile(elm)(scope);
        scope.$digest();
    }));

    it('should change checkbox value on wrapper click', inject(function($compile, $rootScope) {
        var wrapper = elm.find('div').eq(0);
        //var wrapper = $('div.checkbox');
        wrapper.click();
        expect(checkbox.prop('checked')).toBe(true);
        expect(scope.value).toBe(true);
        wrapper.click();
        expect(checkbox.prop('checked')).toBe(false);
        expect(scope.value).toBe(false);
    }));
});

Angular.js附带了jqLite,所以当我运行"elm.find('div').eq(0)“时,我得不到elm.find()方法。我会简单地使用jQuery,但每次我使用它的一个选择器时,都不会返回任何项;我总是得到$(随便什么).length === 0。

只是为了澄清,我使用的karma-ng-html2js-preprocessor就像here一样。

EN

回答 1

Stack Overflow用户

发布于 2014-05-27 19:19:20

您应该测试范围变量的值,而不是元素属性值。因为如果一切顺利,那么作用域变量的值应该已经更改。

例如,以下测试通过:

代码语言:javascript
复制
describe('Checkbox field', function () {
    var $scope, elm;

    beforeEach(module('myApp'))

    beforeEach(inject(function ($rootScope, $compile) {
      $scope = $rootScope.$new();
      $scope.value = true;
      $scope.data = "Click on me";

      elm = $compile('<checkboxfield data="data" model="value"></checkboxfield>')($scope);
    }))

    it('should change checkbox value on wrapper click', function () {
        expect($scope.value).toBe(true);
        elm.click();
        expect($scope.value).toBe(false);
        elm.click();
        expect($scope.value).toBe(true);
    })
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23831114

复制
相关文章

相似问题

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