Node.js使這非常簡單。您可以在您的測試方法中正確創建您的服務器,並創建一個客戶端以使用該測試方法進行連接。它會變得非常乾淨。
您的客戶端/服務器通信將具有某種消息/通信合同。所以,對於TDD這件事,你會從每個消息/數據集等開始,併爲此寫入測試。我喜歡讓Server封裝一個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語法中犯了一個錯誤。
你應該考慮使用摩卡,它是TJ Expresso的進化(來自Expresso的GitHub:「請務必查看Expresso的後繼摩卡。」)。至於這個問題本身,我認爲應該測試對TCP服務器的調用,但是與實現(它本身應該是測試的目標,與TCP調用分開)分開進行測試。 – mna 2012-02-13 03:05:41
我完全同意使用摩卡。我愛摩卡。 – 2012-02-13 03:07:41