2014-04-27 4 views
1

지난 며칠 동안 이미 몇 가지 질문을 게시했습니다.이 질문은 너무 길었습니다 (나는 비현실적인 피드백을받지 못했기 때문에 추측하고 있습니다). 나는 이것을 간단하게하려고 노력했다.Nodeunit 테스트 이벤트 기반 비동기 코드

다음 코드는 'setup-complete'이벤트를 사용하여 nodeunit setUp 명령에 테스트를 실행하도록 알립니다. 내 코드의 일부 무슨 문제가 있나요 TEST2

- 이벤트 기반 비동기 코드 - : 실행 취소 테스트 (또는 설정/분해 분석) : 테스트 1 개 패스 테스트 2

고장이 실패? nodeunit은 이벤트 기반 코드를 테스트하기에 좋지 않은 선택입니까? 내 접근 방식인가? 조언을 주시면 감사하겠습니다. 감사

async_setup.js :

var 
    events = require('events'), 
    setup = new events.EventEmitter; 

module.exports = function (app, cb) { 
    setup.on('setup-complete', function() { 
    cb(); 
    }); 
    setTimeout(function() { 
    if (app.result) throw new Error("AlreadyConfiguredAppError"); 
    app.result = "app is configured"; 
    setup.emit('setup-complete', app.result); 
    }, 5000); 
    return app; 
}; 

테스트/test.js는 :

var 
    nodeunit = require('nodeunit'), 
    async_setup = require('../async_setup'); 

exports[ 'event based async code' ] = nodeunit.testCase({ 
    setUp: function (callback) { 
    this.app = {}; 
    async_setup(this.app, callback); 
    }, 

    tearDown: function (callback) { 
    delete this.app; 
    callback(); 
    }, 

    'test1': function (t) { 
    t.expect(1); 
    t.ok(this.app.result !== undefined, 'app is configured'); 
    t.done(); 
    }, 

    'test2': function (t) { 
    t.expect(1); 
    t.ok(this.app.result !== undefined, 'app is configured'); 
    t.done(); 
    } 
}); 
+0

문제가 발생하여 이벤트 리스너 설정이 테스트 사이에 파괴되지 않습니다. – user3381520

답변

0

문제는 이벤트 리스너 설정이 테스트 사이에 파괴되지 않은 것이 었죠. 나는 noPreserveCache 플래그가 설정 proxyquire를 사용하도록 설정 기능을 수정하여 문제를 해결 :

iterator(x.value, function (err, v) { 
Cannot read property 'value' of undefined 
: Webstorm의 오류 메시지가 nodeunit 비동기 모듈 오류 스택 추적과 함께, 더 많은 정보를 가지고
var proxyquire = require('proxyquire'); 
... 

setUp: function (callback) { 
    this.app = {}; 
    proxyquire.noPreserveCache(); 
    var async_setup = proxyquire('../async_setup', {}); 
    async_setup(this.app, callback); 
} 

코드를 살펴 보았을 때 테스트에서 하나만 설정 했더라도 두 개의 이벤트 리스너 설정이 있음을 발견했습니다.

다른 사람에게 도움이되기를 바랍니다.