导入所有打字稿不起作用

时间:2016-08-22 18:10:40

标签: javascript node.js typescript npm

我不知道我是不是很傻,但是,我已经安装了网络请求模块:

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,看起来很好。

我做错了什么? :(

1 个答案:

答案 0 :(得分:1)

我假设测试需要调用回调,以便测试运行器知道它已完成并且它是异步。以下是基于代码的示例。您可以阅读有关jasmine的例子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的文档,似乎他们使用了等待。函数调用后不需要then。这会暂停执行,直到解析了promise并在返回对象中为您提供值。虽然不适合所有事情,但它可以用于测试。