2016-08-22 62 views
0

我不知道我笨,但是,我已经安装了网络请求模块:进口所有打字稿不起作用

npm install web-request 

它被安装,它存在于节点模块。 我尝试使用它:

import * as WebRequest from 'web-request'; 
export class MyHttp { 

public static getUrl() { 

console.log('hello'); 
    WebRequest.get('http://www.google.com/').then(()=> { 
    console.log('success'); 
}); 

} 
} 

然后,我用它在测试:

import {MyHttp} from '../../../services/MyHttp'; 

describe('Request',() => { 

    fit('should be successful',() => { 
    MyHttp.getUrl(); 
    setTimeout(()=> { 
    expect(true).toBe(true); 
},5000); 

}); 

}); 

控制台输出为:

hello 

我无法看到 '成功' 输出在所有。

打字没问题,我可以输入web-request \ index.d.ts,看起来很好。

我在做什么错? :(

+2

您的测试运行器正在退出,因为它不知道您正在运行异步行为。阅读茉莉花文档以了解如何编写异步测试功能。 –

+0

不要创建只包含静态方法的类,也不要导出它们:http://stackoverflow.com/q/29893591/1048572 – Bergi

+0

您是否曾尝试在承诺中添加“catch”错误处理程序? – Bergi

回答

1

我假设测试需要一个回调被调用,以便测试运行者知道它已完成并且它是Async。下面是一个基于代码的示例,您可以阅读关于jasmine for例如here

import * as WebRequest from 'web-request'; 
export class MyHttp { 
    public static async getUrl() { 
     console.log('hello'); 
     await WebRequest.get('http://www.google.com/') 
     console.log('success'); 
    } 
} 
it('should be successful',() => { 
    MyHttp.getUrl(); 
    expect(true).toBe(true); 
}); 

编辑:。如果你在web-request的文档看起来似乎他们使用的await没有必要在函数调用后then这可以暂停执行,直到承诺得到解决,给你价值在回报对象中虽然不适用于所有事情,但它对测试有意义

+0

是的,我试过这个回调,它不起作用 –

+0

我已经改变了我的答案了一下。 – qballer

+1

函数应该是异步的 –