我的<custom-directive>
有replace:true
和template: '<img />'
。
我怎样才能为它编写单元测试?我想我想测试它实际上用img替换了custom-directive。
it('should be transformed to <img>', function(){
var elm = $compile('<custom-directive></custom-directive>')(scope);
scope.$digest();
var t = elm.find('img'); // wrong! it replaces the element. it won't find another one inside
//expect(elm).toBeAnImgElement ?
});
我找不到正确的匹配器。
我见过的最接近的案例是检查内容(elm.html()
或elm.text()
),但我的标记为空。
答案 0 :(得分:18)
将你的指令包装在一个div中,如:
describe('Directive: custom', function () {
beforeEach(module('App'));
var element, $scope;
it('should be transformed to <img>', inject(function ($rootScope, $compile) {
$scope = $rootScope.$new();
element = angular.element('<div><custom-directive></custom-directive></div>');
element = $compile(element)($scope);
expect(element.children('img').length).toBe(1);
}));
});
答案 1 :(得分:3)
您可以获取实际的HTMLElement对象并检查其标记名。使用elm[0]
:
expect(elm[0].tagName).toEqual('A');