javascript - 如何监视函数中调用的属性?

标签 javascript angularjs unit-testing jasmine karma-jasmine

我需要监视“offsetWidth”,因为该值现在未定义。 getCurrentPage 是一个根据 id currentpage 获取元素的函数。

getCurrentPage 上的 spy 工作,但我还需要声明 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/

相关文章:

Javascript 在 catch block 中丢失了回溯

javascript - 将 Junior Framework 与 Meteor 结合使用(Jr 未定义)

javascript - 如何将单词列表按照最常用到最不常用的顺序排列?

javascript - Vis.js 中垂直滚动的解决方法

javascript - Ionic 3动态单选按钮formBuilder验证如果全部选择则启用按钮

javascript - 具有动态 templateUrl 的 angularjs 组件

.net - Log4net 没有在我的 VS2012 单元测试中运行

如果点击的链接与当前页面的 URL 相同,AngularJS 将不会刷新页面

c - 如何编写具有多个源文件和头文件的检查测试 makefile.am?

python - 子类化TestCase时如何防止Django在父类上运行单元测试?