簡體   English   中英

通過Node JS測試骨干模型

[英]Testing Backbone Models via node js

我一直在嘗試通過一個快速的node.js項目將單元測試與我的Backbone模型集成在一起,但是很難確切地掌握如何完成此任務。 (旁注:我來自很多Java背景,並且意識到有一些區別,但是到目前為止,我喜歡節點開發環境的簡潔性。)

我的問題源於以下問題,主干模型需要在瀏覽器中公開才能在其中運行,而通過mocha進行的測試是節點運行時環境上的“服務器端”。

這是我正在談論的示例:

模型文件:/public/js/backbone/models.js

var SomeModel = Backbone.Model.extend({...});

服務器端測試:/test/backbone/models-test.js

???

我寫 ??? 因為通過服務器端進行正常的單元測試,您只需執行以下操作:

var SomeModule = require('./someModule');

繼續你的快樂之路。 顯然,由於瀏覽器未在Node中運行,因此模塊不易使用。

我已經閱讀了一些文章,指出您需要將瀏覽器端的javascript包裝在require.js中,這會將這些javascript文件自動放入節點名稱空間,從而使您能夠進行require並繼續進行測試。 但是,我還沒有找到完成此任務的連貫方式,並且我嘗試搜索示例,但似乎找不到適用的方法。 當然,這很可能是我對該框架普遍缺乏的知識,因為我仍在圍繞着如何在javascript中定義范圍,注入依賴項等整個思想。

任何幫助將不勝感激,如果這個問題已經被問了一百萬遍了,我對此表示歉意,我敢肯定,並且我以錯誤的方式提出了。

提前致謝。

如果您有一些僅用於節點的代碼(例如,如果您僅打算在節點下執行它們,則可以進行單元測試),則可以采用以下方法:

  • npm安裝主干
  • var Backbone = require('backbone');
  • 只要確保您從NPM獲得的主干版本與發送到瀏覽器的版本相同即可。 如果願意,您甚至可以將public/js/backbone.js符號鏈接到node_moules/backbone/backbone.js下的文件。

如果您只有瀏覽器代碼,則可以使用Backbone全局變量,也可以使用它的require.js版本。

如果您有要在瀏覽器中運行但也可以在節點中運行的代碼(例如模型),則最干凈的解決方案是使用var Backbone = require('backbone');將其編碼為CommonJS(節點)樣式var Backbone = require('backbone'); 並在node中以這種方式運行,但是在將其發送到瀏覽器並使用require.configrequire.paths將“ backbone”映射到您的require.paths文件時,將其包裝為requirejs / AMD包裝器。

有關此非常受歡迎的問題/答案的詳細信息:

https://stackoverflow.com/a/10914666/266795

也可以看看:

http://backbonetutorials.com/organizing-backbone-using-modules/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM