2016-06-21 3 views
2

자식 서비스를 사용하는 노드 서비스가 있습니다.이 경우 자식은 STDIN 및 STDOUT을 사용하는 C++ 바이너리입니다. 이 서비스는 예상대로 작동하고 있으며 현재 mocha/chai를 사용하는 서비스의 메소드에 대한 단위 테스트를 작성하고 이스탄불을 통해 테스트를 실행하려고합니다. 이 stuufs의 기반을 마련했지만, child_process를 사용하는 노드 서비스에 대한 단위 테스트를 작성하는 방법에 대한 예제를 얻고 싶습니다. 이 예제를 바탕으로 나는 내 서비스에 대한 단위 테스트를 작성하고 Instanbul에서이를 실행하여 범위 보고서를 생성 할 수 있습니다.child_process를 사용하는 노드 서비스에 대한 단위 테스트 작성

서비스는 이것은 매우 사소한 예입니다

var spawn    = require('child_process').spawn, 
    child    = spawn(pathToBinary); 
child.stdin.write('JSON'); 
child.stdout.on('data', function (data) { 
    //perform operations here 
}); 
+0

데이터 이벤트 콜백에 걸릴 수있는 모든 경우에 대한 테스트를 작성하는 것이 좋습니다. 따라서 테스트 할 콜백이 아니라 결국 내부에 쓰려고하는 내용이 ... – deostroll

+0

@deostroll은 이러한 유형의 STDIN/STDOUT 시나리오에 대한 예제 유닛 테스트에 대한 링크를 제공 할 수 있습니까? – Sai

답변

1

이 같은 아이를 생성합니다,하지만 일부 도움이 될 수 있습니다.

'use strict'; 

var spawn = require('child_process').spawn; 
var expect = require('chai').expect; 

describe('test', function() { 
    it('should return testing', function(done) { 
    var cat = spawn('/bin/cat'); 

    cat.stdout.on('data', function (data) { 
     expect(data.toString()).to.equal('testing'); 
     done(); 
    }); 

    cat.stdin.write('testing'); 
    }); 
}); 
+1

감사합니다.이 예제는 저의 아이디어로 시작했습니다. 제 시나리오에서는 stdin이 필수 키와 함께 JSON을 가져옵니다. 바이너리 용 val 쌍과 stdout은 기본적으로 데이터 스트림 인 JSON입니다. – Sai