【发布时间】:2015-01-07 01:51:04
【问题描述】:
我正在测试一个包装 Socket.IO 的 Angular 服务。为此,我需要监听我正在创建的同一个套接字发出的事件。
这里是服务:
angular.module('core').factory('SocketIOService', ['$rootScope',
function($rootScope) {
var socket = io();
return {
on: function(eventName, callback) {
var args = arguments;
socket.on(eventName, function() {
$rootScope.$apply(function() {
callback.apply(socket, args);
});
});
}
};
}
]);
还有一段测试文件(SocketIOService 是我正在创建的服务,socket 是来自io() 的全局单例返回值,$rootScope 是注入的$rootScope):
it('should apply changes using $rootScope.$apply', function() {
var rootScopeSpy = sinon.spy($rootScope, '$apply');
SocketIOService.on('anEvent', function() {});
socket.emit('anEvent', {});
expect(rootScopeSpy.calledOnce).toBe(true);
});
但是,socket 不会“听到”它正在侦听的事件,它自己也发出。有没有办法发出事件并监听(和“听到”)该事件?
【问题讨论】:
-
您的确切问题不清楚。它不工作吗?
标签: angularjs testing socket.io