2016-09-18 60 views
0

我想多次調用test函數,但在第一次調用jasmine.onComplete後,程序退出。我已經知道,我不能同時進行多項測試,但我認爲,我可以排隊,但如果茉莉花退出節點,我就完成了。因此:預防茉莉花oncomplete退出

有沒有辦法來防止茉莉花退出節點?

const toCall = {} 
jasmine.onComplete(function(passed) { 
    toCall[varReporter.last.name](passed, varReporter.last.result) 
    toCall[varReporter.last.name] = null 
}); 

function test(folder, file, callback){ 
    toCall[file] = callback 
    jasmine.execute(['JS/' + folder + '/tests/' + file + '.js']) 
} 

// User saves a file, a test get triggered. 
test('prototype', 'Array', function(passed, result){ 
    console.log(util.inspect(result, { colors: true, depth: null })) 
}) 

// User saves an other file and an other test should get triggered, but can't. 

根據用戶與文件的交互,我的測試不會在組中被調用,而是一個接一個地調用。我需要在每次保存後運行測試,以便我可以確定何時處理它們。

回答

2

您可以覆蓋茉莉退出選項:

jasmine.exit =() => {}; 

但是,這會導致各種故障。 我寧願在另一個進程中運行整個腳本:

運行test.js

const path = require('path'), 
    Jasmine = require('jasmine/lib/jasmine.js'); 

const jasmine = new Jasmine({ projectBaseDir: path.resolve() }); 
jasmine.execute(process.argv.slice(2)); 

手錶tests.js

const fork = require('child_process').fork; 

function test(folder, file) { 
    fork('run-test.js', ['JS/' + folder + '/tests/' + file + '.js']); 
} 

// User saves a file, a test get triggered. 
test('prototype', 'Array') 
// User saves an other file and an other test should get triggered, but can't. 
+0

這實際上是我結束了與...主要是因爲,我可以然後運行多個測試(即使並行,不是它會necesery,但它仍然很高興) – Akxe

+1

只是澄清,你應該添加clos聆聽叉子,讓人們可以看到如何正確地做到這一點 – Akxe