我正在开发与其他服务对话的服务。为了测试这些交互,我有一个假的http服务器。我使用node.js并通过http请求进行测试。测试在流程外部运行,因此我不能(并且不想)模拟请求/响应。
到目前为止,我有一个环境变量,允许我在服务本身内切换主机。但是,我不能将假请求/响应作为主机名。
我还运行与真实外部服务交互的服务的开发版本。我可以在测试运行期间以编程方式更改/ etc / hosts,因为我可能不会"使用"运行测试时的开发服务,但我宁愿保持测试沙箱的纯度。
理想情况下,我希望某个版本的/ etc / hosts仅适用于该进程。这将允许虚假的http服务器也收集请求的预期主机。
我也对实现测试主机名沙箱的不同方法持开放态度。
答案 0 :(得分:1)
/etc/hosts
由gethostbyname()
使用,这是一个实际执行解析的系统调用。
没有简单的方法可以按照你想要的方式去做。
假名/地址的本地DNS服务器怎么样?
答案 1 :(得分:0)
这适用于很多实现,但对您来说可能并不可行。您有一个UNIX / OSX标记,所以:
你必须把你的过程放在chroot监狱里。 chroot将根/
更改为其他位置,例如:/localroot
。
然后,您可以在/localroot/etc/hosts
下创建您的主机版本。它被chrooted过程视为/ etc / hosts
有很多关于如何在网上设置的信息。您创建的任何用户帐户都“锁定”在那里。
我找不到基本的OSX chroot信息,这是更高级的,主要用于sftp用户。: