我使用Sails v0.10.x並在運行我的功能測試時遇到問題。使用Mocha和Grunt在Sails.js中運行功能測試時的競爭條件
測試/ bootstrap.test.js
// force the test environment to 'test'
process.env.NODE_ENV = 'test';
var Sails = require('sails');
// use zombie.js as headless browser
var Browser = require('zombie');
// Global before hook
before(function(done) {
var self = this;
// Lift Sails and start the server
Sails.lift({
log: {
level: 'error'
},
}, function(err, sails) {
// initialize the browser using the same port as the test application
self.browser = new Browser({ site: 'http://localhost:1337', debug: false });
done(err, sails);
});
});
// Global after hook
after(function(done) {
Sails.lower(done);
this.browser.close();
});
問題是Sails.lift觸發默認咕嚕任務運行。此任務所做的一件事是清除公用文件夾,然後複製資產。
我遇到的問題是我的功能測試正在運行,而此複製仍在進行中。這意味着當我的無頭瀏覽器請求靜態資產時,我會得到大量的404錯誤(並且測試失敗)。
我猜可能有幾種解決方案
- 添加新聞「帆舉」命令不清洗下來的公共文件夾(這可能部署後運行測試時,雖然會產生問題?)
- 添加超時帆後發射了我的無頭瀏覽器之前提升(這看起來雖然哈克)
- 某種回調/事件(不知道這是可能的嗎?)
什解決方案有其他人想出這個問題嗎?
感謝您的回覆,但不幸的是這不起作用。在複製仍在進行的同時觸發完成。 – redeye 2014-10-03 10:03:18
有趣 - 當我測試這個時,我無法完全調用「done」,因爲我意識到「watch」任務阻止了它。更新了我的答案,並提供了有關禁用「觀看」測試的信息。在我做完之後,這就像一個魅力。 – sgress454 2014-10-03 17:05:35