我正試圖用MongodB學習一種測試驅動方法。文件夾結構摩卡如何知道在測試套件中首先加載哪個文件
甲user.js
src文件夾中
const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
const Schema = mongoose.Schema;
const UserSchema = new Schema ({
name: String
});
const User = mongoose.model('user', UserSchema);
module.exports = User;
含量test_helper.js
const mongoose = require('mongoose');;
mongoose.connect('mongodb://localhost/users_test');
mongoose.connection
.once('open',() => {
console.log('Connected to Mongo!');
done()})
.on('error', (error) => {
console.warn('Warning', error);
});
create_test.js
內容
const assert = require('assert');
const User = require('../src/user');
describe('Creating records',() => {
it('Saves a user', (done) => {
const user = new User({ name: 'Ankur' });
user.save()
.then(() => {
assert(!user.isNew);
done();
});
測試
現在,當我運行npm test
測試正在通過。
Connected to Mongo!
Creating records
√ Saves a user (779ms)
但我的疑問是如何Mocha
知道先運行test_helper.js
文件,每次。 (將該文件命名爲任何其他名稱也不會改變行爲)。
而且我不使用任何根級別掛鉤。
我知道摩卡將文件加載遞歸在每個目錄,從根目錄,因爲這裏的一切都僅僅是一個目錄,以便它不是在這裏做任何區別。
有人可以請建議或幫助,摩卡如何知道test_helper.js
(或任何具有相同內容的文件名)應該先運行。
謝謝你這麼詳細的回答。我已經把它放在鉤子之前。它只是沒有鉤之前也測試條件顯示這種行爲..對我來說是令人驚訝 –
啊,是的,如果它是在一個全球'之前'鉤,你避免了我描述的問題。它也符合我解釋的行爲。必須在任何測試之前執行'before'鉤子。它不依賴於加載順序。 – Louis
fs.readdir和fs.readdirSync在Linux上進行排序..如果我可以投兩次就完成了。因爲在你回答PeterMüller(https://github.com/Munter)之前,摩卡貢獻者..回答了這個問題,我仍然在閱讀文檔,看看它是如何按字母順序加載文件的「並且你回答了相同 –