我正在尝试使用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)。我假设它的某些东西与试图模仿某些东西有关,但还没有找到办法让它工作。
提前致谢。
答案 0 :(得分:2)
我使用lokka
与XMLHttpRequest
有类似的问题。我为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