2017-06-23 59 views
0

如何为波纹管文件中创建单元测试节点JS单元测试兴农柴

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

你的问题太不清楚回答。单元测试应该回答一些问题。你想要测试什么?你想测试一下'KafkaService'是否正在用某个配置调用,或者是什么?如果这是一个模块,那么它的API是什么? – oligofren

+0

感谢@oligofren在这里我想测试2条件,1.如果是成功console.log不应该调用,2.如果它失败console.log应该叫 –

回答

1

这是一种难以测试的东西是不是一个单位,作为单位通常会暴露要测试的方法,所以我假设您最终在测试代码中执行此操作。所以这里有云:

/////////// 
 
// 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

谢谢我会试试这个 –

+0

你可能也有兴趣在http ://sinonjs.org/how-to/link-seams-commonjs/。如果我的答案解决了您的问题,请考虑将其标记为解决方案 – oligofren