如何对 Web 套接字进行单元测试 - JavaScript



我想测试使用sockjs实现的Web套接字。

   var sock = new SockJS('http://mydomain.com/my_prefix');
   sock.onopen = function() {
       console.log('open');
   };
   sock.onmessage = function(e) {
       console.log('message', e.data);
   };
   sock.onclose = function() {
       console.log('close');
   };

我目镜,只找到了这篇文章。这还不够好,因为它正在建立实际的联系而不是伪造它。

我也尝试过,但在这里只发现了一个未解决的问题。

有人建议 sinonjs,但我找不到任何像样的例子。

如果有人能阐明这个话题,我将不胜感激。

当您想要对访问外部资源的功能进行单元测试时,例如在您的例子中为 websocket 服务器,通常的方法是使用 mock-对象来表示外部资源。 模拟对象是一个外观和行为类似于外部资源的对象,但实际上并不访问它。此外,它可以具有日志记录功能,如果测试的代码的行为符合预期,它就可以向测试代码报告。

在您的情况下,您将创建一个模拟SockJS对象,该对象具有普通SockJS对象的所有相关属性和方法,但其实现实际上并未与服务器联系。它仅记录方法调用并返回现有服务器将发送的预期响应。

然后,您将重构要测试的代码,以便它不会创建套接字本身,而是从外部获取分配的套接字对象(这称为"依赖注入",是编写单元可测试代码的关键习惯用法(。

在实际代码中,你分配一个真正的 SockJS 对象。但是在你的单元测试中,你分配你的模拟对象。调用测试方法后,您可以检查模拟对象以检查设备是否将预期数据发送到服务器。

相关内容

  • 没有找到相关文章

最新更新