2016-05-12 63 views
1

我有一个angularjs websocketservice中工作。我想用jasmine来测试socket的基本onOpen onClose onMessage and send事件。这里是插座是如何在service定义:模拟Angularjs插座和茉莉花测试

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服务器?这将使我能够测试我的所有期望?

回答

2

我会嘲笑整个$websocket,如本plunk,这样一来你有完全控制什么的你如何想要测试。