Разработка через тестирование с TCP-сервером Node.js? - PullRequest
3 голосов
/ 13 февраля 2012

Я пишу упрощенный TCP-сервер с использованием Node.JS, чтобы узнать больше о некоторых конкретных вещах, прежде чем приступить к более крупному проекту, который я имею в виду.Я надеюсь узнать больше о разработке через тестирование, аутентификации пользователей и шифровании.Для удовольствия я внедряю многопользовательскую игру в крестики-нолики с учетными записями пользователей, статистикой и случайным сопряжением игр.некоторые части приложения, но пришло время написать часть TCP.Я использую Expresso в сочетании с Should.js, и он отлично работает.У меня вопрос, как именно я тестирую TCP-сервер?Делаю ли я повторяющиеся запросы и проверяю, получаю ли я то, что хочу?Или я должен каким-то образом написать сервер таким образом, чтобы он мог быть протестирован без необходимости делать запросы в первую очередь?(через абстракцию)

Мне очень любопытно.Заранее благодарим за понимание!

1 Ответ

3 голосов
/ 13 февраля 2012

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...