J'ai un serveur Faye publish/subscribe qui envoie un message aux nouveaux abonnés uniquement si un message a déjà été envoyé aux autres abonnés. J'utilise mocha pour les tests unitaires.
Ce test permet de confirmer la fonctionnalité de base :
it('should send a special message to new subscribers', function(done){
testerPubSub.setLastJsonContent('some arbitrary content');
var subscription = client.subscribe("/info", function(message) {
assert.equal(true, message.text.indexOf('some arbitrary content') !== -1, 'new subscriber message not sent');
done();
});
subscription.cancel();
});
Mais je voudrais maintenant tester le cas où il n'y a pas eu de message envoyé aux abonnés précédents. Ce test serait quelque chose comme :
it('should not send a special message to new subscribers if no data has been retrieved', function(done){
testerPubSub.setLastJsonContent(null);
var messageReceived = false;
var subscription = client.subscribe("/sales", function(message) {
messageReceived = true;
});
////need to magically wait 2 seconds here for the subscription callback to timeout
assert.equal(false, messageRecieved, 'new subscriber message received');
subscription.cancel;
done();
});
Bien sûr, la fonction de sommeil magique est problématique. Existe-t-il une meilleure façon de réaliser ce genre de test "Je m'attends à ce que le callback ne soit jamais activé" ?
Merci, Mike