0

他のサービスと対話するサービスを開発しています。これらの相互作用をテストするために、偽の http サーバーを用意しました。私は node.js を使用しており、http リクエストを介してテストしています。テストはプロセスの外部で実行されているため、リクエスト/レスポンスをモックすることはできません (したくありません)。

これまでのところ、サービス内でホストを切り替えることができる環境変数があります。ただし、ホスト名に基づいて偽のリクエスト/レスポンスを作成することはできません。

また、実際の外部サービスとやり取りするサービスの開発バージョンも実行しています。テストの実行中に開発サービスを「使用」しない可能性が高いため、テストの実行中にプログラムで /etc/hosts を変更できますが、テスト サンドボックスの純度を維持したいと考えています。

理想的には、/etc/hosts のバージョンをプロセスにのみ適用したいと考えています。これにより、偽の http サーバーがリクエストの目的のホストを収集することもできます。

また、テスト用のホスト名サンドボックスを実現するためのさまざまなアプローチにもオープンです。

4

2 に答える 2

1

/etc/hostsgethostbyname()特に、実際に解決を実行しているシステムコールによって使用されます。

思い通りにする簡単な方法はありません。

偽の名前/アドレスを持つローカル DNS サーバーはどうですか?

于 2012-12-27T16:29:32.443 に答える
1

これは多くの実装で機能しますが、実行できない場合があります。UNIX/OSX タグがあるため、次のようになります。

プロセスをchroot監獄に入れる必要があります。chroot は、ルート/を別の場所に変更します (例: ) /localroot

次に、ホストのバージョンを の下に作成できます/localroot/etc/hosts。chroot されたプロセスからは /etc/hosts として認識されます

設定方法については、Web 上にたくさんの情報があります。また、作成したユーザー アカウントは、そこで「ロック」されます。

基本的な OSX chroot 情報が見つかりません。これはより高度で、主に sftp ユーザーを対象としています。

http://www.macresearch.org/restricted-sftp-mac-os-x-leopard

于 2012-12-28T00:29:25.820 に答える