2017-06-23 1 views
0

Comment créer des tests unitaires pour le fichier ci-dessousUnité de nœud Test sinon le chaï

index.ts

import ---- 
import ---- 

let workerService = new WorkerService(); 
let creatWorkerPromise = Promise.promisify(workerService.createWorkers); 

creatWorkerPromise() 
.then(function(){ 
    let kafkaService = new KafkaService(kafkaConfig, workerService); 
}) 
.catch(function (err: any) { 
    console.log('Error while creating workers:', err); 
}); 
+0

Votre question est trop claire pour répondre. Un test unitaire est censé répondre à une question. Qu'essayez-vous de tester? Voulez-vous tester que 'KafkaService' est appelé avec une certaine config, ou quoi? Et si c'est un module, alors quelle est son API? – oligofren

+0

merci @oligofren ici je veux tester 2 conditions, 1. si c'est le succès console.log ne devrait pas appeler, 2. si elle échoue console.log devrait être appelé –

Répondre

1

Il est un peu difficile à tester quelque chose qui est pas une unité, une unité expose généralement les méthodes qui doivent être testées, donc je suppose que vous faites cela éventuellement dans le code de test. Alors, voici:

/////////// 
 
// index.js 
 
/////////// 
 
// stubs for this example to work 
 
var createWorkerPromise = function(){ return Promise.resolve(); } 
 
var workerService, kafkaConfig; 
 
function KafkaService(){ throw new Error("crashes test"); } 
 

 
function exportedFunction(){ 
 
    return createWorkerPromise() 
 
    .then(function(){ 
 
     var kafkaService = new KafkaService(kafkaConfig, workerService); 
 
    }) 
 
    .catch(function (err) { 
 
     console.log('Error while creating workers:', err); 
 
    }); 
 
} 
 

 
/////////// 
 
// test.js 
 
/////////// 
 
var log = console.log.bind(console); 
 
var assert = function(expr) { 
 
    if(!expr) throw new Error("AssertionError"); 
 
    log("TEST OK"); 
 
} 
 

 
// the test 
 
var spy = sinon.spy(console, 'log'); 
 
exportedFunction().then(function test() { 
 
    assert(spy.called); 
 
    
 
}).catch(log.bind(null, "TEST FAILED"))
<script src="https://unpkg.com/[email protected]/pkg/sinon.js"></script>

+0

merci, je vais essayer ce –

+0

vous pourriez également être intéressé par http : //sinonjs.org/how-to/link-seams-commonjs/. Si ma réponse résout votre question, envisagez de la marquer comme la solution – oligofren