2017-06-23 105 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