角度2测试 - 将窗口打开并刷新间隔

时间:2016-09-09 09:53:05

标签: unit-testing angular typescript jasmine sinon

我需要在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. 如何存根window.open并测试,someUrl正在使用,我读过你到目前为止你只能使用茉莉?在Sinon你有sinon.stub(窗口,'打开',()=> {})
  2. 如何测试间隔内的http.get?我收到此错误
  3.   

    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 => {
                 ???
            });
        })))
    

    谢谢!

0 个答案:

没有答案