2014-04-22 61 views
2

我想在使用PouchDB庫的一些js上編寫單元測試。 爲了使用PouchDB,我需要啓動一個簡單的HTTP服務器*。如何測試需要服務器的javascript(PouchDB)

我的文件結構是 /公共(所有的HTML和供應JS) /規格(所有我的JS和Ruby規範文件)

如果我啓動服務器(如rackup)在/ public文件夾中,我將無法訪問/ specs文件夾中的規格(因爲/ public文件夾將成爲Web服務器的根目錄)。

如果我要在/ specs文件夾中啓動機架,我將無法訪問我想在/ public文件夾中測試的js文件(因爲/ specs文件夾將會出現在網頁的根目錄服務器)。

我想如果我重構它,以便我的規格在我的公用文件夾,這可以工作。但是這看起來很笨重。我想我也可以複製我在specs文件夾內測試的js文件。再次,這似乎很笨重。當然,有更好的方法來做到這一點。

*當我嘗試做以下簡單的代碼,而一個簡單的HTTP服務器上運行,我得到一個錯誤:

var db = new PouchDB('todos'); 
db.put({_id : '001' }); 

我得到:

請求處於狀態「被拒絕」與「操作數i」中的「outcome = TypeError:invalid」

嘗試使用「python -m SimpleHTTPServer」與http服務器相同的代碼可以正常工作(請求將被執行)。

回答

0

In order to use PouchDB, I need to start a simple HTTP server.

我不知道你是如何使用PouchDB(在節點?在瀏覽器?PouchDB服務器?),但你並不需要一個HTTP服務器來運行它。實際上,您可以交換所有需要的後端:CouchDB,LevelDB,IndexedDB或WebSQL。

還有一個可以在Node中使用的內存後端,以及we're working on making it a browser plugin too,因此應該是測試的理想選擇。

E.g.這裏是你的HTTP支持袋:

var db = new PouchDB('http://localhost:5984/mydb'); 

而且這裏是你的本地袋:

var db = new PouchDB('myLocalDb'); 

而且這裏是你的內存袋(只能在節點現在) :

var db = new PouchDB('myInMemoryDb', {db: require('memdown')}); 

這有幫助嗎?

+0

不幸的是,沒有:)我已經添加了PouchDB在問題中失敗的更多細節。如果我可以讓PouchDB在瀏覽器中本地工作,那將是理想的選擇。 – JoeyC

+0

嗯...似乎我現在可以在沒有服務器的情況下運行它。我不知道TypeError業務一開始發生了什麼。但我現在很高興:D我已經給你答案。 – JoeyC

0

我最終這樣做了一種半笨重的方式。我在公用文件夾中創建了一個我想要的資源的sym鏈接,將它們注入到規範中。然後我可以運行服務器規範內部測試pouchDB正確