2013-02-06 4 views
1

Je rencontre des problèmes en transmettant les valeurs parent topic aux valeurs topic enfants. Le code est asynchrone et je pense que c'est là que j'ai le problème. Je veux qu'une partie de la réponse JSON soit le sujet des tests ci-dessous. Voici les parties pertinentes des tests.Portée du sujet asynchrone Vows.JS

{ 
    "A test":{ 
    topic: function() { 
     request(conf.server + '/categories/' + id, this.callback) 
    }, 
    'should respond with a 200': function(err, res, body) { 
     res.statusCode.should.equal(200); 
     console.log(JSON.parse(body).title); 
    }, 
    'should have valid JSON in the body': function(err, res, body) { 
     (function() { 
     JSON.parse(body); 
     }).should.not. 
     throw(); 
    }, 
    'category collection': { 
     topic: function(err, res, body) { 
     console.log(res.statusCode); 
     return JSON.parse(body).categories 
     }, 
     'should have a length greater than 0': function(topic) { 
     topic.length.should.be.above(0); 
     } 
    } 
    } 
} 

console.log(res.statusCode) cède indéfini et d'essayer de se connecter le topic dans « devrait avoir une longueur supérieure à 0 » rendements [SyntaxError: Unexpected token u].

Puis-je faire ceci? Si c'est le cas, comment?

Répondre

0

J'ai fait un test rapide sur ceci, il semble que lorsque le premier paramètre, c'est-à-dire err est nul, il n'est pas passé au sous-contexte. Tous les autres paramètres sont passés. Voici mon code .:

module.exports = (function() { 
var vows = require('vows'), assert = require('assert'), suite; 
suite = vows.describe('Vows test'); 
suite.addBatch({ 
    'Parent context ' : { 
     topic : function() { 
      this.callback(null, "first", "second"); 
     }, 
     'err should be null' : function(err, first, second) { 
      assert.isNull(err); 
      assert.isNotNull(first); 
      assert.isNotNull(second); 
     }, 
     'subcontext: ' : { 
      topic : function(err, first, second) { 
       console.log('Err: ' + err + ', first: ' + first + ', second: ' + second); 
       this.callback(null, "firstChild"); 
      }, 
      'Error should be null' : function(err, firstChild) { 
       assert.isNull(err); 
       assert.isNotNull(firstChild); 
      } 
     } 
    } 
}); 

suite.run(); 
}()); 

Résultat était Err: first, first: second, second: undefined ✓ OK » 2 honored.

Mais quand je passe quelque chose par erreur, le journal n'est même pas imprimé et les erreurs de sous-contexte. Je ne connais pas les raisons exactes de cela. Je vais vérifier le code des vœux et revenir si je trouve quelque chose. J'espère que cela vous sera utile.

Questions connexes