如何使用 Karma 在组件测试中存根 Google gapi 全局变量
how to stub Google gapi global variable in component tests using Karma
我正在尝试在我的 angular 4 项目中为使用 Google gapi 的服务设置测试。
我遇到的问题是变量是全局声明的但没有被模拟,因此当我 运行 测试时我得到以下错误:
ReferenceError: gapi is not defined
如何模拟 gapi 全局变量(及其对 load 和 auth2 的调用)?
这是我的 2 classes(实施和测试 class)
组件class
declare const gapi: any;
@Component({
selector: 'app-register-google',
templateUrl: './register-google.component.html',
styleUrls: ['./register-google.component.css']
})
export class RegisterGoogleComponent implements OnInit, AfterViewInit {...}
测试class
describe('RegisterGoogleComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [RegisterGoogleComponent]
})
.compileComponents();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
我对 Google API 常量也有类似的问题。
@estus 是正确的;您可以在 beforeEach
块中的 window 上定义全局变量:
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
window['gapi'] = {
load() {
return null;
},
anotherFunction() {
return null;
}
}
}
我正在尝试在我的 angular 4 项目中为使用 Google gapi 的服务设置测试。 我遇到的问题是变量是全局声明的但没有被模拟,因此当我 运行 测试时我得到以下错误:
ReferenceError: gapi is not defined
如何模拟 gapi 全局变量(及其对 load 和 auth2 的调用)?
这是我的 2 classes(实施和测试 class)
组件class
declare const gapi: any;
@Component({
selector: 'app-register-google',
templateUrl: './register-google.component.html',
styleUrls: ['./register-google.component.css']
})
export class RegisterGoogleComponent implements OnInit, AfterViewInit {...}
测试class
describe('RegisterGoogleComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [RegisterGoogleComponent]
})
.compileComponents();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
我对 Google API 常量也有类似的问题。
@estus 是正确的;您可以在 beforeEach
块中的 window 上定义全局变量:
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
window['gapi'] = {
load() {
return null;
},
anotherFunction() {
return null;
}
}
}