我正在寫一個指令的測試,基本上擴展它的容器以達到瀏覽器窗口的整個寬度。噶 - 不正確的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