【发布时间】:2015-01-17 13:07:27
【问题描述】:
大多数 Angular 教程都在讨论使用 Protractor 的端到端测试来测试编译后的模板是否按预期输出。我想知道是否可以通过单元测试来做到这一点。
大多数讨论在单元测试中引用 HTML 代码的教程都描述了在测试中编译您自己的书面代码,例如,以确保正确访问指令:
describe('some function', function () {
it('should do something', inject(function ($compile, $rootScope) {
var element = $compile('<div id = "foo" ng-hide = "somecondition">Bar</div>')($Scope);
$rootScope.digest();
//Search for a given DOM element and perform some test here
}));
});
但是假设我想测试实际模板文件中的代码。就像我想测试是否成功设置了 ng-hide 一样。我希望能够做类似的事情:
describe('some function', function () {
it('should do something', function () {
//Get the div with ID 'foo' in the compiled template
var elm = $('#foo');
expect(elm.css('display')).toEqual('none');
});
});
当我这样做时,这不起作用。 elm 被设置为一些 HTML/Javascript 代码,但不是模板的代码,elm.css('display') 返回为未定义。
有没有办法通过 Jasmine/Angular 设置对此进行单元测试?
【问题讨论】:
标签: angularjs unit-testing jasmine