如果我有微服务,它应该创建用户,但由于用户创建很复杂,它使用队列,而用户实际上是由消费者创建的,端点只接受请求并返回成功或失败。
如何为此验收标准创建验收测试:
给定:想要注册的用户
何时: 请求 api 以创建用户
然后:创建用户并为新用户设置托管 environment_id
为此,我必须等待环境实际设置完毕,这最多需要 30 秒。如果我在我的测试中实现 sleep ,那么我会遇到反模式 wait and see如何在不失败最佳实践的情况下正确测试它?
最佳答案
最恰当的做法可能是,为了立即返回响应,假设“设置进程已启动”(使用设置进程 ID),然后使用另一个 API 方法,该方法将“获取设置状态”(针对该设置进程 ID)-然后在“设置已完成”时继续。
因为,与此类似,无论是在测试中还是在生产中,都不会卡住 30 秒 - 并且可以向用户显示一个进度条,指示当前状态,以便他们估计需要多长时间 -虽然没有得到印象,但有些东西被卡住了或无法工作。
几乎不能异步测试,而设置过程本身不会是异步的;没有任何状态指示器的长时间运行的任务几乎不能接受交付 - 因为这只看起来有效,同时知道后台发生了什么,但在不知道的情况下则不然。
每当测试遇到反模式时,这就是一个指标,表明解决方案可能不是最优的。
关于java - 如何为异步微服务创建验收测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318727/