react-native - 使用 Detox 和 Nock 模拟 API 调用
问题描述
我正在尝试模拟来自 Detox 测试的 API 调用,但似乎没有任何效果。理论上,诺克会做我想要的,但是当我用诺克调试运行我的测试时,它没有看到我的应用程序发出的任何请求。我正在使用 axios 发出请求,并且尝试将我的 axios 实例上的适配器设置为 http 适配器。
任何有关如何使用 Detox 使用 nock 的建议,或者如果有另一个您已经成功使用的模拟库,我们将不胜感激,谢谢!
解决方案
我最终做的是利用 Detox 文档中指定的模拟(一个单独的*.e2e.js
文件在测试期间到达不同的端点)。您定义这些仅在 e2e 期间运行的特殊文件,我已将我的设置为仅命中localhost:9091
- 然后我在该端口上运行 Express 服务器,为我需要的端点提供服务。
也许是一种丑陋的方式,希望得到建议!
我的模拟文件:
// src/helpers/axios.e2e.js
import axios from 'axios';
const instance = axios.create({
baseURL: `http://localhost:9091/api`,
});
export default instance;
这是我在测试期间运行快速服务器的方式:
// e2e/mytest.e2e.js
const express = require('express');
let server;
beforeAll(async () => {
const app = express();
app.post('/api/users/register/', (req, res) => {
res.status(400)
res.send({"email": ["Test error: Email is required!"]})
})
await new Promise(function(resolve) {
server = app.listen(9091, "127.0.0.1", function() {
console.log(` Running server on '${JSON.stringify(server.address())}'...`);
resolve();
});
});
})
afterAll(() => {
server.close()
})
推荐阅读
- laravel - 尝试使用 laravel 获取非对象的属性“catid”
- javascript - 将对象数组添加到单个数组中
- c# - 无法启动应用程序。联系应用程序供应商
- r - 将 stat_summary 与 ggplot 一起使用时更改条形顺序
- android - 在 Android 9 (Android Pie) 中从输入法服务显示对话框
- html - 是否可以使用适当的 Access-Control-Allow-Origin 标头为跨域资源启用 WebAudio 处理?
- html - 滚动父级中向上增长的内容
- haskell - 在haskell中定义自定义类型
- c++ - Qt错误iso c++禁止指针和整数之间的比较-fpermissive
- python - 比较 LSTM 结构