javascript - 如何在 typescript 中模拟 XMLHTTPRequest 以进行单元测试

标签 javascript angular unit-testing webpack jasmine

我的 src 文件中有这段代码,我想为此编写单元测试。我在 Angular 4 应用程序中使用 karma-webpack。请推荐

public static load(jsonFile: string): Promise<boolean> {
console.log('calling loadinstance');
return new Promise((resolve: any, reject: any) => {
  const xobj = new XMLHttpRequest();
  xobj.overrideMimeType('application/json');
  xobj.open('GET', jsonFile, true);
  xobj.onreadystatechange = () => {
    const readyOK = 4;
    const responseOK = 200;
    if (xobj.readyState === readyOK) {
      if (xobj.status === responseOK) {
        ConfigLoader.data = JSON.parse(xobj.responseText);
        resolve(true);
      }
      else {
        reject(`Could not load file '${jsonFile}': ${xobj.status}`);
      }
    }
  };
  xobj.send(null);
});

}

最佳答案

安静简单地使用 spy 软件。

it('Your Service', inject([YourService], (YourService: yourService) => {
  spyOn(yourService, 'load').and.returnValue(loadedJSON);

关于javascript - 如何在 typescript 中模拟 XMLHTTPRequest 以进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150151/

相关文章:

javascript - 在 Bind-attr Handlebars Ember.js 中使用条件语句

angular - useAsDefault 不能与 Electron + Webpack 实现一起使用? ( Angular 2)

c - 对带有 -Wl,--wrap 的包装函数的 undefined reference

python - 测试带有 float 的元组的断言

javascript - AWS Lambda 上的 promise 得到解决后,.then 不会运行

javascript - KineticJS 无法在 FF 和 IE 中工作

angular - 在 Angular 4+ 中处理两个 URL(矩阵 && 查询)参数

angular - Typescript - 将回调传递给订阅的 @injectible 服务

java - 如何使用参数化构造函数运行 junit

javascript - console.log 不会打印 Node js 中的所有快速 session 属性