[bugfix] Tabs: incorrect line position in some cases (#3961)

This commit is contained in:
neverland
2019-07-25 19:03:16 +08:00
committed by GitHub
parent f52890cfd6
commit 3c2270a5ad
20 changed files with 154 additions and 168 deletions

48
test/utils/dom.ts Normal file
View File

@@ -0,0 +1,48 @@
import { trigger } from './event';
function mockHTMLElementOffset() {
Object.defineProperties(HTMLElement.prototype, {
offsetParent: {
get() {
return this.parentNode || {};
}
},
offsetLeft: {
get() {
return parseFloat(window.getComputedStyle(this).marginLeft) || 0;
}
},
offsetTop: {
get() {
return parseFloat(window.getComputedStyle(this).marginTop) || 0;
}
},
offsetHeight: {
get() {
return parseFloat(window.getComputedStyle(this).height) || 0;
}
},
offsetWidth: {
get() {
return parseFloat(window.getComputedStyle(this).width) || 0;
}
}
});
}
mockHTMLElementOffset();
export function mockGetBoundingClientRect(rect: ClientRect | DOMRect): Function {
const originMethod = Element.prototype.getBoundingClientRect;
Element.prototype.getBoundingClientRect = <any>jest.fn(() => rect);
return function () {
Element.prototype.getBoundingClientRect = originMethod;
};
}
export function mockScrollTop(value: number) {
Object.defineProperty(window, 'scrollTop', { value, writable: true });
trigger(window, 'scroll');
}