我正在写一个指令的测试,基本上扩展它的容器以达到浏览器窗口的整个宽度。噶 - 不正确的ui属性的div,而单元测试Angular JS指令
为了举例说明,我会写一些示例代码。
HTML页面:
<div style="width: 800px; margin: 0 auto;">
<full-width></full-width>
</div>
的指令然后更换fullWidth
指令:
<div class="full-width">
<div ng-transclude=""></div>
</div>
,并分配利润的元素,像这样:
var sideOffset = element[0].offsetLeft*-1;
element.css('margin-left', sideOffset+'px')
element.css('margin-right', sideOffset+'px')
现在
,该指令工作完全正常,但是当我尝试测试与胶印:
describe('Directive: fullWidth', function() {
beforeEach(module('myApp'))
var element,
scope
beforeEach(inject(function ($rootScope) {
scope = $rootScope.$new()
}))
it('should have the same right and left margin', inject(function ($compile) {
element = angular.element('<tt-full-width-section></tt-full-width-section>');
element = $compile(element)(scope)
var leftMargin = element.css('margin-left')
console.log(leftMargin)
console.log(element)
}))
})
我得到一个不错0px
。同时检查记录的element[0].offsetLeft
结果为0.
任何想法,我如何(如果可能)告诉Karma(茉莉花?)呈现div,所以我可以检查偏移?
基于daveoncode建议,我做了一些修改测试,我们正在改善。 但是,该指令似乎并未在测试中起作用。
我而具有offsetLeft
it('should have the same right and left margin', inject(function ($compile) {
element = angular.element(
' <div style="width:50%; margin: 0 auto;">' +
' <full-width></full-width>' +
' </div>'
);
element = $compile(element)(scope)
angular.element(document).find('body').append(element);
var el2 = element.find('div')
var leftMargin = el2.css('margin-left')
var rightMargin = el2.css('margin-right')
console.log(leftMargin, el2)
}
我有同样的问题日前,请阅读我自己的答案在这里:http://stackoverflow.com/questions/25654043/css-issue-testing-angularjs-directives-with-karma-jasmine;) – daveoncode 2014-09-10 12:36:22
绝对有帮助,但不是决定性的。请看看我的更新 – domokun 2014-09-10 15:37:13