如何测试需要服务器的javascript(PouchDB)
How to test javascript (PouchDB) that requires a server
我想在一些使用PouchDB库的js上编写单元测试。为了使用PouchDB,我需要启动一个简单的HTTP服务器*。
我的文件结构是/public(提供的所有html和js)/spec(我所有的js和ruby spec文件)
如果我在/public文件夹中启动一个服务器(比如rackup),我将无法访问/specs文件夹中的spec(因为/public将成为web服务器的根目录)。
如果我在/specs文件夹中启动rackup,我将无法访问我想在/public文件夹中测试的js文件(因为/specs是web服务器的根目录)。
我想,如果我重新构造它,使我的规格在我的公共文件夹中,这可以工作。但这看起来相当笨拙。我想我也可以在specs文件夹中复制我正在测试的js文件。再说一遍,这看起来相当笨拙。当然,有更好的方法可以做到这一点。
*当我尝试在没有运行简单http服务器的情况下执行以下简单代码时,我会得到一个错误:
var db = new PouchDB('todos');
db.put({_id : '001' });
我得到:
请求处于"已拒绝"状态,显示"output=TypeError:invalid'in'操作数i"
使用"python-m SimpleHTTPServer"在http服务器上尝试相同的代码将正常工作(请求将得到满足)。
为了使用PouchDB,我需要启动一个简单的HTTP服务器。
我不知道你是如何使用PouchDB的(在浏览器PouchDB服务器的Node?上),但你不需要HTTP服务器来运行它。你实际上可以交换任何你想要的后端:CouchDB、LevelDB、IndexedDB或WebSQL。
还有一个内存中的后端可以在Node中使用,我们也在努力将其打造成一个浏览器插件,因此这应该是测试的理想选择。
例如,这是您的HTTP支持包:
var db = new PouchDB('http://localhost:5984/mydb');
这是你当地的包:
var db = new PouchDB('myLocalDb');
这是你的内存包(目前只在Node中工作):
var db = new PouchDB('myInMemoryDb', {db: require('memdown')});
这有帮助吗?
我最终以一种半笨拙的方式完成了这项工作。我在公共文件夹中创建了一个指向我想要的资源的符号链接,将它们注入到规范中。然后我可以在规范中运行一个服务器来正确测试pouchDB
- 提示使用服务器端事件处理程序激活JavaScript
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 如何使用Javascript将空数组发送到PHP服务器
- Javascript配置服务器URL并将其存储
- 用本地Javascript源替换服务器上的Javascript源文件
- 在Javascript服务器/客户端中共享对象定义
- 在Javascript中复制C#服务器端验证
- 如何向服务器端提交javascript变量
- 如何通过服务器上的Node从客户端JavaScript上传到谷歌云存储
- 使用c#中的邮件附件javascript在客户端机器上获取服务器端导出的crystal报告路径.下面的
- 刷新GoogleMaps tile服务器可以使用JavaScript,但不能使用GWT
- HttpClient not POST-ing-data to 后端服务器 - javascript.
- 将 JSON 数据发送到服务器 - Javascript
- 客户端-服务器javascript通信
- 如何从服务器javascript强制加载页面
- ArcGIS服务器Javascript报告
- ASP.使用HTML5 Canvas的.NET绘图应用程序.保存到服务器.JavaScript错误
- 如何制作Autobahn WAMP Python服务器&Javascript客户端协同工作
- 浏览器和服务器javascript中的十六进制字符串输出不同
- 上传图像/视频到一个单独的服务器- Javascript流星