我需要在MyService中单独测试我的代码部分
social(someUrl){
let intervalTimer = Observable.interval(1000);
let authWindow = window.open(someUrl);
let pingWindow = intervalTimer.subscribe(()=>{
if(authWindow.closed){
pingWindow.unsubscribe();
return this.http.get(...)
}
})
}
它会弹出一些调用我后端执行某些功能的Url,一旦完成,它将被重定向到一个关闭弹出窗口的空白页面(所以只是脚本中的window.close())
所以基本上上面的代码会检查弹出窗口是否仍然打开,如果不是,则取消订阅并返回http.get请求作为Observable。
我有两个主要问题:
1个周期性计时器仍然在队列中。
这是我的test.spect设置
const mockHttpProvider = {
deps: [MockBackend, BaseRequestOptions],
useFactory: (backend: MockBackend, defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions)
}
};
describe('my Test', () => {
beforeEachProviders(() => {
return [
MyService,
MockBackend,
BaseRequestOptions,
provide(Http, mockHttpProvider)
]
});
it('should...', inject([MyService, MockBackend], fakeAsync((myService: MyService, backend: MockBackend) => {
backend.connections.subscribe((connection: MockConnection) => {
???
});
myService.social().subscribe(res => {
???
});
})))
谢谢!