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

时间:2016-08-08 13:33:43

标签: react-native xmlhttprequest jestjs babel-jest

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

ReferenceError: XMLHttpRequest is not defined

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

我使用lokkaXMLHttpRequest有类似的问题。我为lokka做了一个模拟,我的api包装类依赖于它。您可以尝试模拟您的api包装器。

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

export default class {
  query() {
    return new Promise(resolve => {
      resolve(200);
    });
  }
}

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

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

  login(user, password) {
    return new Promise(resolve => {
      resolve('login_successful');
    });
  }
}

答案 1 :(得分:2)

在我的情况下,我没有测试搜索代码,只是在我的代码路径中的某处导入它,所以我决定只在setup.js文件中的全局级别进行模拟(使用{加载} {1}}在试运行时)。以下适用于我:

--require