You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何Mock按动作进度返回不同状态的REST API以满足测试轮询需求?

实用的Mock轮询REST API方案

针对你需要Mock一个支持状态切换的轮询API场景,这里有几个靠谱的方案,覆盖了从可视化工具到代码实现的不同需求:

1. 用WireMock实现灵活的状态控制

WireMock是一款非常强大的开源Mock工具,特别适合这类需要状态切换的场景:

  • 你可以配置请求计数触发切换:设置前N次请求返回{"status": "in progress"},第N+1次及以后返回{"status": "success"}
  • 也可以配置时间延迟切换:设置初始状态为'in progress',经过指定时长后自动切换到'success'响应。
  • 还能添加额外的管理端点,比如POST /reset-mock,用来手动重置状态,方便重复测试。

2. 用Node.js/Express快速搭建自定义Mock服务

如果需要完全自定义逻辑,用Node.js写个极简服务几分钟就能搞定:

const express = require('express');
const app = express();

// 初始化状态
let currentStatus = 'in progress';

// 模拟动作完成的延迟,比如12秒后切换为success
setTimeout(() => {
  currentStatus = 'success';
}, 12000);

// 目标轮询端点
app.get('/api/status', (req, res) => {
  res.json({ status: currentStatus });
});

// 可选:添加重置端点,方便重复测试
app.post('/api/reset-status', (req, res) => {
  currentStatus = 'in progress';
  // 重新启动定时器
  setTimeout(() => {
    currentStatus = 'success';
  }, 12000);
  res.json({ message: 'Status reset successfully' });
});

app.listen(3000, () => {
  console.log('Mock status API running on http://localhost:3000');
});

安装依赖npm install express后就能运行,完全符合你的轮询需求。

3. 用Mockoon可视化配置Mock服务

如果你不想写代码,Mockoon是个绝佳选择——它是图形界面的Mock工具,操作非常直观:

  • 创建一个GET端点,设置第一个响应为{"status": "in progress"},并添加条件(比如“请求次数 < 5”或者“当前时间在启动后10秒内”)。
  • 添加第二个响应为{"status": "success"},设置为默认响应(当第一个条件不满足时触发)。
  • 你还能随时在界面上手动切换状态,或者配置延迟响应来更真实模拟真实API的等待时间。

4. 用Python Flask搭建轻量Mock服务

如果你更熟悉Python,用Flask同样能快速实现:

from flask import Flask, jsonify
from threading import Timer

app = Flask(__name__)

current_status = 'in progress'

def update_status():
    global current_status
    current_status = 'success'

# 15秒后自动切换状态
Timer(15.0, update_status).start()

@app.route('/api/status', methods=['GET'])
def get_status():
    return jsonify({"status": current_status})

@app.route('/api/reset', methods=['POST'])
def reset_status():
    global current_status
    current_status = 'in progress'
    Timer(15.0, update_status).start()
    return jsonify({"message": "Status reset"})

if __name__ == '__main__':
    app.run(port=3000, debug=True)

安装pip install flask后运行,就能得到一个符合需求的Mock API。

这些方案都能完美模拟真实API的状态切换逻辑,你可以根据自己的技术栈和需求选择最适合的~

内容的提问来源于stack exchange,提问作者KRR16

火山引擎 最新活动