如何使用testcafe拦截和模拟Websocket请求

时间:2019-05-23 18:26:18

标签: javascript websocket mocking automated-tests testcafe

出于功能测试的目的,我正在尝试覆盖一些websockets请求。

我已经尝试按照此处https://devexpress.github.io/testcafe/documentation/test-api/intercepting-http-requests/的建议使用拦截和模拟,但是这对于HTTP来说似乎很简单,并且只能更新WSS中的状态代码。 WSS中的消息使用JSON,我需要对其进行覆盖。

import { RequestMock } from 'testcafe';
import { debug } from 'util';


const mockStream = new RegExp('test\/socket.io\/v2\/.?');

const ipUrl = 'https://example.com';
const mockedResponse = Buffer.from([0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01]);

const mock = RequestMock()
    .onRequestTo(mockStream)
    .respond(mockedResponse, 101, {
        'access-control-allow-credentials': true,
    });

fixture `Fixture`
    .page(ipUrl)
    .requestHooks(mock);
test('Mocking', async t => {
    await t
    .debug()
        .click('#button')
        .wait(5000)
        .debug();
});

1 个答案:

答案 0 :(得分:3)

目前,无法拦截WebSocket请求。 我已经在TestCafe存储库中为此案例创建了issue。 跟踪它以了解我们在实现此功能方面的进展。