我们有一个AngularJS控制器来定义这个函数:
$scope.testMe = function() {
return $('#test');
}
现在我们如何测试呢?
我们的尝试是这样的Karma测试:
describe('testMe', function() {
var scope, element, ctrl;
var html = '<span id="test"></span>';
beforeEach(module('theModule'));
beforeEach(inject(function($rootScope, $compile, $controller) {
scope = $rootScope.$new();
ctrl = $controller('theCtrl', {$scope: scope});
element = $compile(html)(scope);
}));
it('finds it', function() {
var gotcha = scope.testMe();
expect(gotcha.attr('id')).toBe('test');
});
});
...但它不起作用 - jQuery似乎在Karma生成的DOM中查找,而不是在我们在var html
中定义的DOM ...
答案 0 :(得分:2)
我不认为将您创建的元素附加到Karma的DOM中会导致任何问题。 你可以这样做:
$("body").append($compile(html)(scope));
scope.$digest();
如果您不想使用Karma的DOM,请尝试使用此问题中建议的html2js preprocessor:Load HTML files with Karma