2016-12-09 84 views
1

我當前正在運行的API測試 - 這與使用摩卡沒有問題運行。測試數組存儲在變量中 - 在文件頂部的「測試」。我想讀一個文本文件中的測試信息和之前運行測試(一次)解析信息到一個變量。如何從運行測試之前,對摩卡讀取文件?

我已經嘗試過使用()同步和異步(下)

//Synchronously 
describe("API Tests", function (done) { 
    before(function(){ 
     tests = fs.readFileSync('./json.txt', 'utf8'); 
     tests = JSON.parse(tests); 
    }); 
    for (var i = 0; i < tests.length; i++) { 
     runTest(tests[i]); 
    } 
    done(); 
}); 

//Asynchronously 
describe("API Tests", function() { 
var tests = ""; 
before(function(){ 
    fs.readFile('./json.txt', 'utf8', function(err, fileContents) { 
    if (err) throw err; 
    tests = JSON.parse(fileContents); 
    }); 
}); 

for (var i = 0; i < tests.length; i++) { 
    runTest(tests[i]); 
}}); 

節點返回一個錯誤,說明該文件不存在(它一樣)。

另外我試圖運行該文件讀(同步和異步),執行封裝在回調描述(根據下文)。似乎無法查出案件,返回「沒有發現任何測試」。

var tests; 
fs.readFile('./json.txt', 'utf8', function(err, fileContents) { 
if (err) throw err; 
tests = JSON.parse(fileContents); 

describe("API Tests", function() { 
    for (var i = 0; i < tests.length; i++) { 
     runTest(tests[i]); 
    } 
}); 
}); 

如何在運行Mocha之前讀取包含測試用例的文件?我在Webstorm中使用了Mocha。

+0

AFAIK'describe'不應該傳遞'done'回調。 – MarcoL

回答

3

異步版本是錯誤的,你需要一個done回調傳遞給before否則鉤子將同步運行。類似於

before(function(done){ 
    fs.readFile('./json.txt', 'utf8', function(err, fileContents) { 
     if (err) throw err; 
     tests = JSON.parse(fileContents); 
     done(); 
    }); 
}); 
+1

這是爲什麼沒有被標記爲解決方案?這幫助了我。謝謝! –

+0

Thnx。看來,如果我在另一個函數包住READFILE,那麼這個功能將無法檢驗的。只有當我宣佈這個功能。 –

相關問題