【发布时间】:2013-10-10 13:20:11
【问题描述】:
伙计们!
我是 Ruby 开发的新手,我正在使用该语言开发我的第一个项目。在与我的朋友讨论后,我在我的第一个实际项目中使用了测试驱动开发方法,但我在早期遇到了一些障碍。
我的项目的主要目的是处理 Source-Engine 专用游戏服务器,我对模拟不太了解,这是我应该做的事情,而不是我的测试依赖于周围的实际服务器用来测试东西。
所以我的问题是:当我需要测试向服务器发送响应并获得正确响应时,我应该如何模拟 UDP 服务器?
例如引用此文档时:https://developer.valvesoftware.com/wiki/Server_queries#A2S_SERVERQUERY_GETCHALLENGE
在给定挑战请求的情况下,我想测试挑战编号的获取。我有点不确定如何继续。
任何帮助将不胜感激并且非常有用。如果我要完成这件事,我希望在第一时间把事情做好,而不是养成任何我以后不得不改掉的坏习惯。
【问题讨论】:
-
我是否应该在我的测试规范中创建本地 UDP 服务器并使用 before/after 将其拆除?这让我想到:stackoverflow.com/questions/14555249/…
-
您是否使用EventMachine 或类似的东西来运行您的服务器?它可以使测试更复杂,但它提供了更好的执行框架。
-
我什至不知道那是什么。我有点磕磕绊绊,只是想在我前进的过程中弄清楚事情。
-
值得研究。编写自己的事件循环结构来处理 UDP 服务很麻烦,而 EventMachine 可以大大简化您的设计。查看如何实现 DNS 服务器的示例以获得想法。
-
是的,基本上我需要模拟游戏服务器对 UDP 消息的响应。具体来说,我的图书馆要发送东西,我需要让它发回某些东西,并确保图书馆正确读取响应等。
标签: ruby unit-testing rspec mocking udp