2014-02-20 122 views
2

從Github上幾個node.js項目的粗略觀察,我注意到常見約定是將測試文件放在./spec目錄下(確切名稱可能有所不同:./tests./specs等)。我們稱之爲「經典」項目組織。Node.JS:測試代碼與生產代碼組織

在另一方面,也有(至少在理論上)的「本地化」組織:每個測試文件在同一目錄因爲它測試的生產文件(例如,./controllers下,我們將有login_controller.js以及login_controller.spec.js )。

爲了避免這顯然主觀題我神學的戰鬥會問具體問題:

  • 有沒有人看到使用本地化組織主要模塊/應用程序?
  • 本地化組織有沒有很多缺點/限制?通過「硬」,我的意思是沿着「好的,Heroku不包括其部署包(a.k.a slug)中的specs /目錄,所以經典組織在服務器上的佔用空間更小」。
  • 有沒有測試框架(摩卡,茉莉花節點和合作),以某種方式強加「經典」計劃?

回答

1
  1. 不,但這取決於您的組織偏好。我個人更喜歡測試目錄。
  2. 沒有。 Heroku包含了它所接收的所有內容,唯一被排除的內容是在你的.gitignore文件中從git中排除的內容。
  3. 不是100%確定,但通常不是,測試框架不會在您的代碼上強加一個結構。他們只是提供工具,讓你使用你想要的結構編寫測試。
2

一致性在這裏比你決定去的方向更重要。有幾個相對較小的問題,我看到與源文件旁邊的測試文件。

  1. 潛在的代碼導航問題。我可以看到你有時在事故中打開 錯誤的文件。打開測試文件的意思是 打開源文件等。如果這些 文件並排存在,並且唯一的區別是 文件名中的.spec,則會更頻繁地發生這種情況。

  2. 單元測試運行器的潛在問題。大多數單元測試運行者似乎默認使用 來選擇測試文件夾。我相信你可以配置 來查看整個項目,但這取決於測試 跑步者。

  3. 潛在的較慢的單元測試自動化。由於您的測試文件是整個項目中混合的 ,因此測試運行程序必須掃描 您的整個項目以獲取測試文件而不是專用目錄。 對於大型代碼庫,這可能意味着您的測試套件需要更長時間才能完成。機會是速度上的差異相當小,但是相當小 。

正如我所說,這些都是小問題,你可以肯定地解決它們,但它確實增加了一些摩擦。您必須權衡潛在的不足之處,將您的測試文件放在源文件旁邊。