Javascript Cypress-如何正确检测页面中的JS错误
我正在编写一个包含N个it的spec文件,其中每个it将访问应用程序的特定页面,并返回应用程序中的错误/警告数量 我也在这里发布了: 提供的解决方案似乎不起作用:Javascript Cypress-如何正确检测页面中的JS错误,javascript,typescript,cypress,sinon,sinon-chai,Javascript,Typescript,Cypress,Sinon,Sinon Chai,我正在编写一个包含N个it的spec文件,其中每个it将访问应用程序的特定页面,并返回应用程序中的错误/警告数量 我也在这里发布了: 提供的解决方案似乎不起作用: it('should spy window.error', () => { cy.visit('https://www.spiegel.de/', { onBeforeLoad(win) { cy.spy(win.console, 'error').as('spyWinConsoleError');
it('should spy window.error', () => {
cy.visit('https://www.spiegel.de/', {
onBeforeLoad(win) {
cy.spy(win.console, 'error').as('spyWinConsoleError');
cy.spy(win.console, 'warn').as('spyWinConsoleWarn');
},
})
console.error('questo e errore')
cy.get('@spyWinConsoleError').should('be.calledOnce');
});
有什么想法吗?有几件事需要注意
- Cypress测试中有两个窗口对象,一个运行测试,另一个运行应用程序。您对
是第一个,但您的间谍在第二个控制台的调用。错误('questoe error')
- 测试代码的运行速度比Cypress命令快,因此
在console.error('questoe error')
cy.visit()完成之前运行
it('应该监视运行程序窗口。错误',()=>{
cy.spy(window.console,'error').as('spyware'error');
控制台错误('questoe error')
cy.get('@spywconsolererror')。应该('be.calledOnce');
});
监视应用程序窗口控制台
it('应该监视应用程序窗口。错误',()=>{
const win=cy.state(“窗口”)
cy.spy(win.console,'error')。as('spyware'error');
win.console.error('questoe error')
cy.get('@spywconsolererror')。应该('be.calledOnce');
});
捕获实际应用程序错误
it('should spy window.error',()=>{
cy.visit(“../app/spy on win error.html”{
加载前加载(win){
cy.spy(win.console,'error')。as('spyware'error');
},
})
cy.get('@spywincoleerror')。应该('be.calledWith','from-app');
});
对于单元测试来说,这似乎是一个更好的例子。为什么需要在浏览器上测试它?你能发布错误吗?错误显示在我共享的github问题页面上。我们想在真正的浏览器上测试这一点。
<body>
<script>
setTimeout(() => {
console.error('from app')
}, 1000)
</script>
</body>