Websocket 在测试之间关闭/清除模拟套接字

Websocket 在测试之间关闭/清除模拟套接字,websocket,cypress,Websocket,Cypress,我正在使用mock socket来模拟websockets调用 我有一个测试正在运行,但它只对一个测试有效,然后它说模拟服务器已经在侦听该url: description('mock socket method 1',()=>{ 让我们来模拟插座; 让mockServer; 在每个之前(()=>{ cy.visit(“/”{ onBeforeLoad(赢:窗口):无效{ //@ts忽略 cy.stub(win,'WebSocket',url=>{ mockServer=新服务器(url).on(

我正在使用
mock socket
来模拟websockets调用

我有一个测试正在运行,但它只对一个测试有效,然后它说模拟服务器已经在侦听该url:

description('mock socket method 1',()=>{
让我们来模拟插座;
让mockServer;
在每个之前(()=>{
cy.visit(“/”{
onBeforeLoad(赢:窗口):无效{
//@ts忽略
cy.stub(win,'WebSocket',url=>{
mockServer=新服务器(url).on('connection',socket=>{
log('mock socket connected');
mockSocket=socket;
});
如果(!mockServer)返回新的WebSocket(url);
});
},
});
});
之后(()=>{
mockSocket.close()
});
它('获取消息',()=>{
常量对象=_createSettingsApiPutPayload(defaultSettingsState)
发送(JSON.stringify(object));
cy.contains('运动阈值')
});
它('获取消息',()=>{
常量对象=_createSettingsApiPutPayload(defaultSettingsState)
发送(JSON.stringify(object));
cy.contains('运动阈值')
});
});
如果我将方法更改为
before()
而不是
beforeach
,那么它可以工作,但是我不会为每个测试获得一个新的环境。正如您所看到的,我在
afterEach()
中尝试了
mockSocket.close()
,但没有成功。我尝试过
cy.reload()
,但这会导致CORS错误

该错误似乎被抛出

> 15 | ReactDOM.render(
  16 |   <AppWrapper/>,
  17 |   document.getElementById('root'),
  18 | );

在文档中,他们使用
mockServer.stop()
停止mockServer,而不是关闭mockSocket。这就是我正在做的,很可能也是你需要的

以下是我所指的片段:

//注意:此超时用于创建另一个微任务,该微任务将在上述任务之后发生
设置超时(()=>{
t、 是(app.messages.length,1);
t、 是(app.messages[0],“来自模拟服务器的测试消息”,“我们已经为我们的websocket后端添加了子项”);
mockServer.stop(t.done);
}, 100);
以下是回购协议的链接: