2014-10-31 41 views
0

我使用Ember CLI的http-mock功能模擬REST API端點,但我想在多個Ember CLI應用程序中使用它。我認爲插件將是一個很好的解決方案,但我似乎無法得到它的工作。 Ember Addon是否支持http-mock?Ember CLI http-mock as addon

這就是我所做的。

創建於

$ ember addon my-http-mock 

外接然後我在插件

$ ember g http-mock users 

創建了一個簡單的測試端點發布到我的github倉庫後,我導入到灰燼CLI項目這樣的in package.json

"dependencies": { 
    "my-http-mock": "git://github.com/git-username/my-http-mock" 
} 

npm安裝後,我跑了我的應用程序,但去http://localhost:4200/api/users不會轉到API端點,而是嘗試加載Ember應用程序。

有什麼辦法可以在多個應用程序中使用http-mock嗎?

回答

3

您需要讓插件實現serverMiddleware,並且您可以將中間件或路由添加到運行在消費ember-cli應用程序中的http-mock。

Advanced Addon customization in ember-cli docs

,胡克獲取的通過了上有明確的應用程序實例在config.app一個config對象。然後你可以添加你想要做的任何事情。如果你在插件中使用生成的http-mock,它看起來像這樣

​​

這是未經測試的代碼,但應該工作。因爲它添加了bodyparser中間件和connect-restreamer,並且它可能已經包含了,如果你的應用程序已經有了它的本地http-mock,那麼所有的嘲諷可能會以一種奇怪的方式衝突。試試看! :)

注意:這個答案是參考使用ember-cli 0.1.2

+0

這很好用。即使是'ALL mocks'選項也能正常工作,並且不會與本地http-mock衝突,但如果addon和本地http-mock都具有相同的端點,則本地端將獲勝。有一件事讓我想起了,即使接受請求頭是什麼,本地http-mock將返回API響應,而如果Accept請求頭是'text/html',addon http-mock將不會響應。因此,請確保您不要通過在瀏覽器地址欄中輸入URL來測試插件API,它會讓您認爲插件無法正常工作。 – 2014-11-02 04:31:54

+0

很高興你知道約翰尼! – jakecraige 2014-11-03 16:37:31