我有一个函数,我想对它进行单元测试我正在比较全局对象 window
& parent
as const isEqual = (window == =父)
;
在 Angular/TypeScript 中模拟这些对象的最佳方式是什么?
另一个想法是通过函数参数获取这些对象,但无论如何它都没有解决这个问题,因为如果我使用 getSomeData(win: Window , parent: Window) {//... }
最佳答案
我采用了这个解决方案:
创建将注入(inject) window
对象的服务。
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class GlobalObjectService {
public getWindow(): Window {
return window;
}
}
在测试中它看起来像:
describe('TestService', () => {
...
let globalObjectService: jasmine.SpyObj<GlobalObjectService>;
beforeEach(() => {
globalObjectService = jasmine.createSpyObj('GlobalObjectService', ['getWindow']);
...
});
describe('#testFunc', () => {
it('should test something', () => {
globalObjectService.getWindow.and.returnValue({
location: {
href: 'window.location.href',
},
});
...
});
});
});
关于angular - 在 Jasmine + Angular 中模拟 'window' 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51949523/