2014-10-03 60 views
0

我有一個可以工作的Node.js Express REST API應用程序。好。Gruntfile從單個grunt命令運行應用程序和模擬測試

我有一個Mocha/Chai/Supertest模擬測試上面的API應用程序。好。

但我必須啓動應用程序,然後獨立運行模擬測試。

如何運行一個啓動API應用程序的grunt命令,讓它啓動並運行,然後運行模擬測試?

或者是否需要以某種測試模式(通過env var)運行API應用程序,並且只有測試邏輯以某種方式調用模擬測試?

我可以嘗試一些事情,並得到一些工作,但什麼是好方法? (避免過度使用的短語「最佳實踐」。)

+0

咕嚕併發可能有助於此。我用它來運行nodemon並同時觀看。 – 2014-10-03 22:20:38

+0

謝謝凱文,我會調查一下grunt併發。我也在考慮在兩個獨立的Docker容器(基於相同的Docker鏡像)中運行API和模擬測試,並在Docker容器啓動時執行參數化的模擬測試。然後我可以使用Docker運行這兩個容器。聽起來有點複雜,但它將是未來使用的有用模式。 – jfathman 2014-10-04 12:46:25

回答

0

你可以做到這一點與咕嚕-Express的服務器和呼嚕聲,摩卡測試,你將探微必須設置你的任務象下面這樣:

grunt.registerTask('test', ['express:test', 'mochaTest']); 

這將使用您爲測試環境設置的配置運行快速服務器,然後在運行grunt test時運行摩卡。

由於您使用的是超級特性,我認爲您正在進行功能測試,這意味着您將使用相同的數據庫進行開發和測試(如果您不是在嘲笑某些東西)。這可能是時間流失,並且由於數據不好而使測試失敗。使用兩種不同的環境可以確保運行測試時的數據狀態。

如果您不想手動執行,仍然可以使用grunt手錶插件重新啓動文件更改的測試。

希望這會有幫助

+0

謝謝Fougere,這看起來很有希望。我會在下週初嘗試並跟進。我想知道是否存在mochaTest可以嘗試在完全初始化並偵聽請求之前訪問快速應用程序的競爭條件? – jfathman 2014-10-04 22:13:07

+0

如果你使用併發,你可以有這種行爲,查看插件的配置。 Grunt一個接一個地執行任務,所以你可以確定,當grunt運行測試時,服務器已經啓動並運行。這就是爲什麼一些聰明的人創建插件併發,到一些獨立的任務,而咕嚕做一些其他人。 – Fougere 2014-10-05 09:46:47

+0

使用grunt-express-server和grunt-mocha-test很好。只是我需要的東西。它預期啓動競爭條件的關注,並支持可選擇正則表達式匹配的「選項輸出」字符串,以便模擬測試不會開始,直到API應用程序發出表示「API就緒」的預期字符串。它也會在模擬測試完成後終止API應用程序。完善。 – jfathman 2014-10-06 15:44:14

相關問題