我在service
工作angularjs websocket。我想使用onOpen onClose onMessage and send
测试socket
的基本jasmine
事件。以下是service
:
angular.module('srvSocket', [])
.service('Socket', function($websocket, localConfig) {
var ws = $websocket('ws://'+localConfig.apiUrl);
ws.onMessage(onMessage);
ws.onError(onError);
ws.onClose(onClose);
ws.onOpen(function () {
console.log('conn opened');
});
function onMessage(data){
console.log('data received');
ws.send(JSON.stringify({test: 'hi'}));
}
function onError(err) {
console.log(err);
};
function onClose() {
console.log('conn closed');
};
});
以下是我在测试中使用(尝试)服务的方式:
describe('Service: Socket', function () {
var socket, $websocket, $websocketBackend, lc;
beforeEach(angular.mock.module('ngWebSocket', 'ngWebSocketMock'));
beforeEach(inject(function(_Socket_, _$websocketBackend_, _$websocket_, localConfig){
socket = _Socket_;
lc = localConfig;
$websocket = _$websocket_;
$mockSocketBackend = _$websocketBackend_;
$mockSocketBackend.mock();
}));
it('should connect to socket api', function(){
var url = 'ws://'+config.apiUrl;
$mockSocketBackend.expectConnect(url);
ws = $websocket(url);
expect($mockSocketBackend.isConnected(url)).to.be.above(0);
});
});
这是我跟随documentation here的距离。我基本上寻找的是如何为服务设置模拟websocket服务器?那会让我测试我的所有期望吗?
答案 0 :(得分:2)
我会嘲笑整个$websocket
,如此plunk所示,这样您就可以完全控制自己想要测试的内容。
答案 1 :(得分:1)
您可以使用this solution中的sockMock
here
我希望这会有所帮助