Angular Js中的单元测试指令

时间:2014-04-03 16:16:50

标签: angularjs unit-testing jasmine karma-runner

我是角度js测试新手。我们正在使用Karma / Jasmine进行测试。我正在尝试对指令进行单元测试。基本上我想确保一旦完成编译,该元素现在包含' id =" tf - ' ......我已经验证了使用dump(element);事实上,我正在获得结果,但我的测试没有测试它应该如何。

在我的测试文件中,我这样做:

var $scope,element;
beforeEach(inject(function($rootScope,$compile) {
    $scope = $rootScope.$new();
    element = engular.element('<div tf-swf></div');
    $compile(element)($scope);
    $scope.$digest();
    dump(element);
})); 

describe('tfSwf directive' , function() {
    it('should place element into DOM' , function() {
        expect(element).toContain('<div id="tf');
    });
});  

所以这就是问题......当我运行它时它失败了,我得到了一个错误:

TypeError: Object [object Object] has no method 'indexOf' at null.<anonymous>

我知道我倾倒那个元素看起来很奇怪,但这是输出:

Object{0: <div tf-swf=""><div id="tf-2403-place"></div></div>, length: 1}

内部div存在且具有包含随机数的id的事实正是我之后...我只是无法弄清楚如何在我的测试中找到内部div。

1 个答案:

答案 0 :(得分:1)

您正在尝试测试元素对象是否包含子字符串。您应该首先将元素对象转换为字符串:

expect('' + element).toContain('<div id="tf');