我要等待该URL的记录: / hdlasrlogging
这将记录在后台发生的每个事件,并将该事件的消息保存在请求正文中。因此,每个事件都有不同的消息。
例如这样的例子:
我尝试使用该功能来完成此操作:
Cypress.Commands.add('waitAtLoggingMsg', (logMsg)=>{
return(
cy.wait('@logging').then(data=>{
let msg = data.requestBody.msg;
expect(msg).to.include(logMsg);
})
);
});
在测试的这一部分
cy.url().should('include', text.links.segmentmeasurements);
cy.waitAtLoggingMsg('FETCH_SEGMEAS_LIST_OVERVIEW_SUCCESS');
cy.get('[data-testid = "TableBody"]').should('not.be.empty');
它应该等待,直到从数据库加载了所有条目。 目前,它只是在等待第一次日志记录,但是我正在寻找的日志记录就在后面。
您有什么建议吗?
答案 0 :(得分:0)
您在此处面临的问题是,package org.XXX.domain.enumeration;
/**
* The Roles enumeration.
*/
public enum Roles {
NODE, REGIONALADMIN, ADMIN;
public static Roles getRoleSearch(String input) {
switch (input) {
case "NODE":
return NODE;
case "REGIONALADMIN":
return REGIONALADMIN;
case "ADMIN":
return ADMIN;
default:
return null;
}
}
}
在即将到来的声明失败时不会重试。它只会尝试一次,这是第一次尚未处理数据。
已知getByTestId
中的命令有此缺点。
默认的cypress命令会重试,因此,如果要使用cypress-testing-library
选择,则不会出现此问题。
如果您想坚持使用.get()
,可以使用cypress-testing-library
,但这种情况很棘手,因为.should(fn)
也不重试,并且递归启动。这使您在使用该替代方法时非常尴尬。
在没有上下文的情况下,我能看到的最好的方法是抛弃.waitAtLoggingMsg()
来支持类似的东西:
.waitAtLoggingMsg()
这将以粗略的方式重试cy.url()
.should('include', text.links.segmentmeasurements)
.should(() => {
cy.getByTestId('TableBody')
.should('not.be.empty');
});
命令。