2015-11-17 29 views
0

是否可以將Sinon Fake Server設置爲響應某些路由,例如/ products而不是/ orders。如何使Sinon Fake服務器響應某些路由,但不是全部

我的方案是:我沒有使用Sinon Fake Server進行單元測試,我想假設服務器在API尚未準備好的情況下應用程序的給定區域。我希望應用程序在所有情況下調用真實服務器,但是當它調用/產品時,我希望sinon爲我做出迴應。

我可以暫時在產品頁面中添加對Sinon的引用,直到我獲得真正的API然後將其刪除,但理想情況下我希望將所有這些與真實實現隔離開來。現在我的main.js文件中有一個UseFakeServer標誌來確定sinon是否打開。我的假服務器有一個RespondWith列表,但是如果沒有找到路由,我會得到一個404而不是嘗試去真正的服務器。假服務器AutoRespond設置爲true。

不知道它是否有所作爲,但我在前端使用骨幹網。

謝謝!

回答

0

假設您通過HttpXMLRequest進行API請求並至少使用Sinon 1.3.0,則應使用sinon.useFakeXMLHttpRequest,然後您可以過濾哪些請求應該是僞造的。

當使用實體模型或部分集成/功能 測試Sinon.JS,你可能要假的一些請求,同時允許其他 去throught到後端服務器。已過濾 FakeXMLHttpRequest s(Sinon 1.3.0中的新增功能),您可以。

FakeXMLHttpRequest.useFilters默認爲false。如果設置爲true,Sinon 將檢查添加的過濾器,如果某些請求應該「未定型」。

FakeXMLHttpRequest.addFilter(fn)添加一個過濾器,將決定是否 或不假冒請求。當xhr.open調用 時,過濾器將被調用,具有完全相同的參數(方法,url,異步,用戶名,密碼 )。如果過濾器返回true,則該請求不會被僞造。

因此,例如,你想/產品不被興農處理它會是這樣的

sinon.FakeXMLHttpRequest.useFilters = true; 
sinon.FakeXMLHttpRequest.addFilter(function(method, url, async, username, password) { 
    return /\/products/g.test(url); 
}); 

查看所有要求http://sinonjs.org/docs/#server

相關問題