2

PouchDB ライブラリを使用するいくつかの js で単体テストを作成したいと考えています。PouchDB を使用するには、単純な HTTP サーバーを起動する必要があります*。

私のファイル構造は /public (提供されるすべての html および js) /specs (すべての js および ruby​​ 仕様ファイル) です。

/public フォルダーで (ラックアップのように) サーバーを起動すると、/specs フォルダーのスペックにアクセスできなくなります (/public フォルダーが Web サーバーのルートになるため)。

/specs フォルダーでラックアップを開始すると、/public フォルダーでテストしたい js ファイルにアクセスできなくなります (/specs フォルダーが Web サーバーのルートになるため)。

私のスペックがパブリックフォルダーにあるように再構築すれば、これはうまくいくと思います。しかし、これはかなり不格好に思えます。specs フォルダー内でテストしている js ファイルを複製することもできると思います。繰り返しますが、これはかなりぎこちないようです。確かに、これを行うためのより良い方法があります。

*単純な http サーバーを実行せずに次の単純なコードを実行しようとすると、エラーが発生します。

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

私は得る:

リクエストは「拒否」状態で、「outcome=TypeError: 無効な 'in' オペランド i」が表示されます

「python -m SimpleHTTPServer」を使用して http サーバーで同じコードを試行すると、問題なく動作します (要求は満たされます)。

4

2 に答える 2

0

私はそれをやや不格好な方法でやってしまいました。public フォルダーに必要なリソースへのシンボリック リンクを作成して、それらを仕様に挿入しました。その後、仕様内でサーバーを実行して、pouchDB を正しくテストできます。

于 2014-04-22T12:47:15.230 に答える
0

PouchDB を使用するには、単純な HTTP サーバーを起動する必要があります。

PouchDB をどのように使用しているかはわかりませんが (Node で? ブラウザーで? PouchDB サーバー?)、それを実行するために HTTP サーバーは必要ありません。CouchDB、LevelDB、IndexedDB、または WebSQL など、必要なバックエンドを実際にスワップインおよびスワップアウトできます。

Node で使用できるメモリ内バックエンドもあります。これをブラウザ プラグインにする作業も進めているため、テストには理想的です。

たとえば、これが HTTP-backed Pouch です。

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

そして、これがあなたのローカルポーチです:

var db = new PouchDB('myLocalDb');

インメモリ ポーチは次のとおりです (現在は Node でのみ動作します)。

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

それは役に立ちますか?

于 2014-04-22T19:23:09.590 に答える