2013-01-08 5 views
0

나는 단위 테스트를 만들기 위해 서약을 사용하려고합니다. "주제"가 '정의되지 않음'일 때 문제가 있습니다. 아래 예를 참조하십시오.맹세 JS 테스트 미확인에 대한

var vows = require('vows'), 
    assert = require('assert'); 

function giveMeUndefined(){ 
    return undefined; 
} 

vows.describe('Test vow').addBatch({ 
    'When the topic is undefined': { 
    topic: function() { 
     return giveMeUndefined(); 
    }, 
    'should return the default value of undefined.': function(topic) { 
     assert.isUndefined(topic); 
    } 
    } 
}).export(module); 

이 코드는 정확하게는 아니지만 요점은 다음과 같습니다. 테스트를 실행할 때 "콜백이 실행되지 않습니다."라는 메시지가 나타납니다. 서약서 코드를 살펴보면 주제가 undefined 일 때 분기된다는 것을 알 수 있습니다.

궁극적으로이 작업을 수행하기 위해 단위 테스트를 작성하는 방법을 알고 싶습니다. 내 팀의 다른 누군가가 내가 해킹을 고려하여 주제에 대한 주장을 작성했으며 true 또는 을 topic === undefined으로 반환했습니다. 서약의 문서에서

답변

0

:

»토픽가 값 또는 비동기 코드를 실행할 수있는 기능 중 하나입니다.

예제에서 topic은 함수에 할당되어 있으므로 vows는 비동기 코드를 예상합니다. 당신은 다음과 같이 콜백을 제공 할 수

var vows = require('vows'), 
    assert = require('assert'); 

function giveMeUndefined(){ 
    return undefined; 
} 

vows.describe('Test vow').addBatch({ 
    'When the topic is undefined': { 
    topic: giveMeUndefined(), 
    'should return the default value of undefined.': function(topic) { 
     assert.isUndefined(topic); 
    } 
    } 
}).export(module); 
0

:

는 간단하게 다음과 같이 당신의 주제를 다시 **Note**

var vows = require('vows'), 
    assert = require('assert'); 

function giveMeUndefined(callback){//**Note** 
    callback(undefined); //**Note** 
} 

vows.describe('Test vow').addBatch({ 
    'When the topic is undefined': { 
    topic: function(){ 
    giveMeUndefined(this.callback); // **Note** 
    }, 
    'should return the default value of undefined.': function(undefinedVar, ignore) { 
     assert.isUndefined(undefinedVar); 
    } 
    } 
}).export(module); 
으로 라인을 준수