假設我有一個由控制器處理的Express路由。控制器使用服務,服務使用存儲庫與數據源進行通信。Typescript/Node.js - 如何模擬集成測試的傳遞依賴關係?
我想用Supertest來測試路線創建一個集成測試:
test -> my Express app -> controller -> service -> repository -> data source
我的問題是,我需要模擬庫/數據源,運行測試!我想對某些值進行硬編碼,就好像它們來自真實的數據源。我有什麼選擇?
在Java世界中,我將使用Spring或Guice的依賴注入,我會用這種方式替換模擬版本的存儲庫。在Typescript/Node.js世界中實現這種模擬的模式是什麼?
我想使用純Javascript,我可以使用Proxyquire
及其Globally override require功能,從測試本身模擬存儲庫。但我不確定這與Stylist的效果很好。
那麼使用Typescript和Node.js從測試文件中嘲諷「深層」組件(一種傳遞性依賴)的建議方法是什麼?
,還有通過護照稱爲[電解質](HTTPS的創造者一個漂亮的圖書館:// github.com/jaredhanson/electrolyte),它執行依賴注入/ IoC。你設置了文件夾,使用它的'IoC.use(..)'函數以相反的順序查找,所以在我的測試引導文件中,我添加了我的mocks文件夾,以便它首先查找,然後解析我的模擬數據源而不是其他文件夾或節點模塊中的數據源。 –