使用jest测试react-native app时,未定义XMLHttpRequest

dbu*_*ann 8 xmlhttprequest jestjs react-native babel-jest

我正在尝试使用jest(集成测试)在基于反应本机的应用程序中测试apiwrapper.当我在iOs模拟器中运行时,一切运行正常,但它不会正确运行我的开玩笑测试 - 我总是得到:

ReferenceError: XMLHttpRequest is not defined
Run Code Online (Sandbox Code Playgroud)

当我尝试使用我的api包装器运行测试时,例如:

it('Login successful with correct data', () => {
  let api = Api.getInstance();
  return api.login("test", "testpass")
         .then(result => expect(result).toEqual('login_successful'));
});
Run Code Online (Sandbox Code Playgroud)

我试图在这里测试的api类确实使用了fetch api(不是vanilla xhr).我假设它的某些东西与试图嘲笑某些东西有关,但还没有找到让它工作的方法.

提前致谢.

小智 2

lokka我在使用时遇到了类似的问题XMLHttpRequest。我为 做了一个模拟lokka,我的 api 包装类依赖它。你可以尝试模拟你的 api 包装器。

这就是我的lokka模拟现在的样子。当我开始测试错误处理时,我会添加更多内容。

export default class {
  query() {
    return new Promise(resolve => {
      resolve(200);
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

你也许可以用类似的东西来模拟你的 api 包装器:

export default class Api {      
  getInstance() {
    \\ However you implemented getInstance      
  }

  login(user, password) {
    return new Promise(resolve => {
      resolve('login_successful');
    });
  }
}
Run Code Online (Sandbox Code Playgroud)