如何测试需要服务器的javascript(PouchDB)

时间:2014-04-22 11:16:56

标签: javascript pouchdb

我想在一些使用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' });

我明白了:

请求处于“已拒绝”状态,“操作数i”中的“结果=类型错误:无效”

使用“python -m SimpleHTTPServer”使用http服务器尝试相同的代码将正常工作(请求将被完成)。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

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

我不确定您是如何使用PouchDB的(在浏览器中的Node?上?PouchDB Server?),但您不需要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');

这就是你的内存中的Pouch(现在只适用于Node):

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

这有帮助吗?