我不知道我是不是很傻,但是,我已经安装了网络请求模块:
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,看起来很好。
我做错了什么? :(
答案 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并在返回对象中为您提供值。虽然不适合所有事情,但它可以用于测试。