0

私はvowsjsを使用して単体テストを作成しようとしています。「トピック」が「未定義」の場合、問題が発生します。以下の例を参照してください。

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た。falsetopic === undefined

4

2 に答える 2

0

Vowsドキュメントから:

»トピックは、非同期コードを実行できる値または関数のいずれかです。

あなたの例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);
于 2013-01-08T23:20:57.347 に答える
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);
于 2013-11-14T15:48:58.053 に答える