我有一個簡單的摩卡測試,使用requirejs和context
配置時失敗。requirejs摩卡上下文錯誤
這裏的A.js
define([], function(){
return {};
});
這裏的測試spec.js
var requirejs = require('requirejs');
var localReq = requirejs.config({
baseUrl: "./",
context: "context1"
})
describe("context test", function() {
it("should not throw error", function() {
for (var i = 0; i < 100; i++) {
console.log(localReq("A"), i);
}
});
});
當我運行測試mocha spec.js
,我得到以下錯誤:
未捕獲的錯誤:試圖加載 「A」 的/Users/khirakawa/work/test/node_modules/mocha/bin/A.js,然後嘗試節點的要求(「A」),它失敗,錯誤:錯誤:找不到獨樂 'A'
以下是截圖:
通知A
是如何正確地加載和記錄的100倍,但試驗還是失敗了。如果我註釋掉context
配置,它工作得很好。
摩卡還打印出「1個傳」和「1次失敗」,即使只有1測試。
這是怎麼發生的?
謝謝Louis!從瀏覽器的角度來看,你的解釋很有意義在node-land中我不明白的是:1)requirejs的文檔聲明「...在Node中運行時,將使用同步IO調用加載模塊加載,並且加載器插件應該同步地解析對其加載方法的調用。」它沒有說模塊需要先加載的任何地方。 2)如果我使用「_」的默認上下文,我的測試用例就可以工作,並且3)如果我將A中返回的內容更改爲{test:「test」},它將打印{test:「test」} 100次,這表明它是同步加載的。 –
你說得對,我爲什麼要求(「A」)失敗的解釋不是目標。然而,很顯然,RequireJS *實際*做的是與文檔不一致。否則,你的代碼將工作。在這一點上,它看起來像一個bug。 – Louis
謝謝Louis,在這裏打開了一張票https://github.com/jrburke/r.js/issues/662 –