我是角度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。
答案 0 :(得分:1)
您正在尝试测试元素对象是否包含子字符串。您应该首先将元素对象转换为字符串:
expect('' + element).toContain('<div id="tf');