我需要spyOn'offsetWidth',因为现在值未定义。
getCurrentPage是一个基于id当前页获取元素的函数。

getCurrentPage上的间谍有效,但我还需要声明offsetWidth。但这没有用。

功能:

getCurrentPage() {
    return this.$document[0].getElementById('currentPage');
}

calculateStep() {
    this.stepWidth = this.getCurrentPage().offsetWidth / (this.totalSteps - 1);
    return this.stepWidth;
}


单元测试:

let stepWidth = new StepController();
stepWidth.totalSteps = 5;

const dummyCurrentPage = '<div id="currentPage" style="width: 20%;"></div>';

spyOn(stepWidth, 'getCurrentPage').and.returnValue(dummyCurrentPage);

const expectedResult = '200 / 4';

const result = stepWidth.calculateStep();

expect(result).toBe(expectedResult);
});


我怎么能窥探this.getCurrentPage()。offsetWidth的offsetWidth?

最佳答案

找到了答案,将dummyCurrentPage转换为angular.element并将offsetWidth定义为angular.element。

const element = angular.element('<div id="currentPage" style="width: 20%;"></div>');

stepWidth.getCurrentPage().offsetWidth = 50;

关于javascript - 如何监视函数中调用的属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57671676/

10-10 00:27