2012-02-13 4 views
3

나는 내가 염두에두고있는 더 큰 프로젝트를 시작하기 전에 Node.JS를 사용하여 단순한 TCP 서버를 작성하고있다. 테스트 주도 개발, 사용자 인증 및 암호화에 대해 자세히 배우고 싶습니다. 킥을 위해 사용자 계정, 통계 및 임의 게임 페어링을 사용하여 멀티 플레이어 틱택 토 게임을 구현합니다.Node.js TCP 서버를 이용한 테스트 주도 개발

어쨌든.

제 질문은 응용 프로그램의 일부분에 대해 테스트를 설정했지만 TCP 부분을 작성해야합니다. 저는 Should.js와 함께 Express를 사용하고 있으며, 잘 작동합니다. 내 질문은 정확히 어떻게 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

멋진데! - 궁금한 점이 있다면 노드 TCP 서버 코드를 어떻게 구성하고 있습니까? 내가 해본 결과 대부분이 서버 파일 안에 '서버'변수를 설정했습니다. 파일 외부에서 파일을 만들고 시작할 수 있도록하려면 어떻게해야합니까? (내가 사용하는 수출품을 사용하지만, 어떤면에서 가장 좋을까요?) –

관련 문제