2016-05-12 2 views
1

У меня есть angularjs websocket, работающий в service. Я хочу протестировать основные события onOpen onClose onMessage and sendsocket, используя jasmine. Вот как сокет определяется в service:Разъем Mock 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. В основном я ищу, как настроить mock websocket server для службы? Это позволит мне проверить все мои ожидания?

ответ

2

Я бы издеваться весь $websocket, как показано в этом plunk, таким образом, вы имеете полный контроль над каким, как вам хочу протестировать.

1

Вы, вероятно, можно использовать sockMock из this solution, как показан here

Я надеюсь, что это помогает

Смежные вопросы