2014-07-18 76 views
4

如果JavaScript模塊與CommonJS(Node)或AMD模塊格式兼容,是否有自動測試的方法?此外,如何將它寫成一個Grunt任務?測試JS模塊是否兼容CommonJS或AMD

可兼容性是模塊的一個重要特性,應至少在某種程度上能夠自動進行測試。例如,建築物配置的改變可能會產生一個compability錯誤,這個錯誤不會被僅使用模塊瀏覽器界面的單元測試所注意到,就像QUnit一樣。模塊的可兼容性代碼(例如自制的UMD wrapper)可能也很可能是如此混亂,以至於很難說代碼中其他地方的更改是否會影響代碼的可兼容性部分。

可以使用生成不同模塊格式的正確包裝的工具。例如grunt-umduRequire就是這樣的工具。但是,由於它們也依賴於構建配置,所以如何確保在沒有任何測試的情況下確保可兼容性?

回答

2

我不認爲有一個開箱即用或明顯的解決方案。

一般有你可以採取來解決問題的幾種方法:

  1. 寫一個模塊格式的代碼,並使用transpilers產生其他模塊格式。 Babel(5)在這方面做得很好,但可能還有其他人。
  2. 使用像esprima這樣的解析器並靜態分析代碼。像「https://github.com/umdjs/umd」這樣的「標準」包裝可能很容易檢測到模式。自定義包裝可能會更困難,並且您可能需要進行一些修改才能完全正確。試試錯誤:讓你的grunt任務創建包含你關心的每種方式(AMD,瀏覽器全局變種)假想模塊的文件(例如.jade模板生成的文件),然後「運行」這些文件(例如使用夜間或硒),看看是否有任何錯誤發生。 (如果你試圖加載的模塊有依賴性,這可能很難得到)
相關問題