Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶演员-模拟网袋_Javascript_Typescript_Websocket_Mocking_Puppeteer - Fatal编程技术网

Javascript 木偶演员-模拟网袋

Javascript 木偶演员-模拟网袋,javascript,typescript,websocket,mocking,puppeteer,Javascript,Typescript,Websocket,Mocking,Puppeteer,有可能在《木偶演员》中模拟WebSocket通信吗?我在测试我的web应用程序时没有真正的后端,而是使用on-requesthandler模拟Ajax调用。但我必须测试服务器响应WebSocket事件的行为。我不知道如何实现这一点。我正在使用以下内容模拟《木偶演员》中的WebSocket。 这将保留旧的侦听器,并提供一个排序存根,以允许测试触发WebSocket侦听器(分配给onmessage)。可能有一个更详细的存根,但我还不需要它 browser.on('targetchanged', as

有可能在《木偶演员》中模拟WebSocket通信吗?我在测试我的web应用程序时没有真正的后端,而是使用
on-request
handler模拟Ajax调用。但我必须测试服务器响应WebSocket事件的行为。我不知道如何实现这一点。

我正在使用以下内容模拟《木偶演员》中的
WebSocket
。 这将保留旧的侦听器,并提供一个排序存根,以允许测试触发
WebSocket
侦听器(分配给
onmessage
)。可能有一个更详细的存根,但我还不需要它

browser.on('targetchanged', async target => {
  const targetPage = await target.page();
  const client = await targetPage.target().createCDPSession();
  await client.send('Runtime.evaluate', {
    expression: `
      window.document.addEventListener("DOMContentLoaded", function () {
        // Track old 'WebSocket'
        window.__WebSocket = window.WebSocket;
        window.WebSocket = function () {
          return {
            // Listener - triggered by tests.
            onmessage: function () {},
            // Send event to "backend" - not really used by tests.
            send: function () {
              console.log(arguments);
            }
          };
        };
      });
    `,
  });
});

我正在使用下面的代码来模拟《木偶戏》中的
WebSocket
。 这将保留旧的侦听器,并提供一个排序存根,以允许测试触发
WebSocket
侦听器(分配给
onmessage
)。可能有一个更详细的存根,但我还不需要它

browser.on('targetchanged', async target => {
  const targetPage = await target.page();
  const client = await targetPage.target().createCDPSession();
  await client.send('Runtime.evaluate', {
    expression: `
      window.document.addEventListener("DOMContentLoaded", function () {
        // Track old 'WebSocket'
        window.__WebSocket = window.WebSocket;
        window.WebSocket = function () {
          return {
            // Listener - triggered by tests.
            onmessage: function () {},
            // Send event to "backend" - not really used by tests.
            send: function () {
              console.log(arguments);
            }
          };
        };
      });
    `,
  });
});