如何测试 WAMP 服务?
How to test WAMP-Services?
上下文:我想编写一个使用 WAMP(Web 应用程序消息传递协议,而不是 Windows 的服务集合)的 Web 服务。应该使用 WAMP,因为它以一种非常简单的方式支持事件和 RPC。并且开销更低。
现在如何在不手动编写所有内容的情况下对服务的 RPC 方法进行单元测试?
我的第一个方法是结合使用 Autobahn-JS 和 QUnit。这里的问题是 AutobahnJS 不支持阻塞 "open()" 方法。所以我不能确定 QUnits beforeEach-hook 打开的连接。看这个例子:
var connection;
QUnit.module("Module 1", function(hooks) {
hooks.beforeEach(function(assert) {
// insert something executed before each test
connection = new autobahn.Connection({
url: wstarget,
realm: wsrealm
});
connection.open();
});
QUnit.test( "check something", function( assert ) {
assert.ok(connection.isConnected == true);
// do something here that requires open connection...
});
});
是否有 other/better 个选项?
同事的解决方案:
QUnit 提供了一种允许异步测试的方法。它的用法有点像提交数据库事务。我必须设置,我期待
的回调
var asyncOp = assert.async();
和"commit"它与
asyncOp();
在回调中。
上下文:我想编写一个使用 WAMP(Web 应用程序消息传递协议,而不是 Windows 的服务集合)的 Web 服务。应该使用 WAMP,因为它以一种非常简单的方式支持事件和 RPC。并且开销更低。
现在如何在不手动编写所有内容的情况下对服务的 RPC 方法进行单元测试?
我的第一个方法是结合使用 Autobahn-JS 和 QUnit。这里的问题是 AutobahnJS 不支持阻塞 "open()" 方法。所以我不能确定 QUnits beforeEach-hook 打开的连接。看这个例子:
var connection;
QUnit.module("Module 1", function(hooks) {
hooks.beforeEach(function(assert) {
// insert something executed before each test
connection = new autobahn.Connection({
url: wstarget,
realm: wsrealm
});
connection.open();
});
QUnit.test( "check something", function( assert ) {
assert.ok(connection.isConnected == true);
// do something here that requires open connection...
});
});
是否有 other/better 个选项?
同事的解决方案:
QUnit 提供了一种允许异步测试的方法。它的用法有点像提交数据库事务。我必须设置,我期待
的回调var asyncOp = assert.async();
和"commit"它与
asyncOp();
在回调中。