2012-02-13 12 views
3

私は大規模なプロジェクトに取り組む前に、いくつかの具体的なことについてもっと学ぶために、Node.JSを使って単純なTCPサーバーを作成しています。途中でテスト駆動開発、ユーザ認証、暗号化についてもっと学びたいと思っています。キックのために、私はユーザーアカウント、統計、ランダムゲームのペアリングを使って、マルチティックタックトゥーゲームを実装しています。Node.js TCPサーバーを使用したテスト駆動開発

とにかく。

私の質問は、アプリケーションのいくつかの部分についてテストを設定しましたが、TCP部分を書く時間が来ました。私はShould.jsと組み合わせてExpressoを使用しています。私の質問は、TCPサーバーをどのくらい正確にテストするのですか?私は繰り返し要求をして、私が欲しいものを取り戻していることを確認していますか?あるいは、私はどういうわけか、最初に要求を出さなくてもテストできる方法でサーバーを書きますか? (抽象的に)

私は真剣に興味があります。洞察のために事前に感謝!

+1

代わりに、TJのExpressoの進化です(ExpressoのGitHubから:「Expressoの後継者であるMochaをチェックしてください」)。質問そのものに関しては、TCPサーバーへの呼び出しをテストする必要がありますが、実装自体(TCP呼び出しとは別にテストの対象にする必要があります)とは別に行う必要があります。 – mna

+0

私はモカの使用に完全に同意します。私はモカが大好きです。 –

答えて

3

Node.jsはこれを本当に簡単にします。テストメソッドでサーバーを作成し、そのテストメソッドで接続するクライアントを作成できます。それは非常にきれいになるでしょう。

あなたのクライアント/サーバー通信には、ある種のメッセージング/通信契約があります。ですから、TDDでは、このメッセージ/データセットなどから始め、そのテストを書くことになります。私は、サーバーにカスタムロジックを実行できるようにTCPサーバーをカプセル化させるのが好きです。

ですから、このようなものかもしれません:

のTest1を:

describe('MyServer', function(){ 
    it('should respond with an acknowledgment of receiving my move command', function(done){ 
     var server = new MyServer(); 
     server.listen(9000); 

     var json = '{"player": "1", "tile": "3"}' //player 1 puts an 'X' in tile 3 
     client = net.connect(9000, function(){ 
     client.write(json); 
     }); 

     client.on('data', function(data){ 

     //** your tests here to validate YOUR CUSTOM server response ** 
     //example assuming your server sends JSON 
     serverResponse = JSON.parse(data.toString()); 
     assert(serverResponse.tilesRemainingCount, 5); //completely custom 

     server.close(); 
     done(); 
     }); 
    }); 
} 

は全くその助けをしていますか?それは私がそれをやってきた方法です、そしてそれは素晴らしいです。何かが明確でない場合はお知らせください。私はそれをクリアしようとします。

また、私はCoffeeScript開発者ですので、JS構文でエラーが発生している可能性があります。

+0

それはすごくいいですね! - ちょうどあなたのNode TCPサーバーコードをどのように構造化しているのでしょうか?私がやったことのほとんどは、サーバーファイル内に「サーバー」変数を設定していました。そのファイルの外から作成して開始するには、どのようにアクセス可能にするのですか? (私は推測する輸出を使用して、しかし、どの方法で最善でしょうか?) –

関連する問題