我有一个要进行单元测试的功能,正在将全局对象np.uint8
和window
与parent
进行比较;
哪种方法是在Angular / TypeScript中模拟那些对象的最佳方法?
还有一个想法是通过函数参数获取这些对象,但是无论如何它并不能解决这个问题,因为如果我使用const isEqual = (window === parent)
window
对象
答案 0 :(得分:1)
我采用了这种解决方案:
创建将注入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',
},
});
...
});
});
});