2

我想在一些使用 PouchDB 库的 js 上编写单元测试。为了使用 PouchDB,我需要启动一个简单的 HTTP 服务器*。

我的文件结构是 /public(提供的所有 html 和 js)/specs(我所有的 js 和 ruby​​ 规范文件)

如果我要在 /public 文件夹中启动服务器(如 rackup),我将无法访问 /specs 文件夹中的规范(因为 /public 文件夹将成为 Web 服务器的根目录)。

如果我在 /specs 文件夹中启动 rackup,我将无法访问 /public 文件夹中要测试的 js 文件(因为 /specs 文件夹将成为 Web 服务器的根目录)。

我想如果我重组它以便我的规格在我的公共文件夹中,这可能会起作用。但这看起来很笨重。我想我也可以在 specs 文件夹中复制我正在测试的 js 文件。同样,这看起来很笨拙。当然,有更好的方法来做到这一点。

*当我尝试在没有运行简单的 http 服务器的情况下执行以下简单代码时,出现错误:

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

我得到:

请求处于“已拒绝”状态,并带有“结果 = TypeError:无效的‘in’操作数 i”

使用“python -m SimpleHTTPServer”在 http 服务器上尝试相同的代码可以正常工作(请求将得到满足)。

4

2 回答 2

0

为了使用 PouchDB,我需要启动一个简单的 HTTP 服务器。

我不确定您如何使用 PouchDB(在 Node 上?在浏览器中?PouchDB 服务器?),但您不需要 HTTP 服务器来运行它。您实际上可以换入和换出您想要的任何后端:CouchDB、LevelDB、IndexedDB 或 WebSQL。

您还可以在 Node 中使用内存中的后端,我们也在努力使其成为浏览器插件,因此它应该是测试的理想选择。

例如,这是您的 HTTP 支持的 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 回答
0

我最终以一种半笨拙的方式完成了它。我在公共文件夹中创建了一个指向我想要的资源的符号链接,以将它们注入到规范中。然后我可以在规范中运行一个服务器来正确测试 pouchDB

于 2014-04-22T12:47:15.230 回答