Cypress의 console.error에 대한 테스트 실패
4753 단어 todayilearnedjavascripttesting
우리는 최근 내 직장에서 종단 간 테스트를 위해 Cypress으로 전환했습니다. 우리는 이전에 Mocha와 Puppeteer의 조합을 사용하여 테스트를 막 꺼버릴 정도로 불안정하게 만들었습니다. 이 플레이크는 완전히 사라졌고 모든 것은 우리의 모든 테스트를 이식하는 것이 비교적 쉬운 프로세스라고 생각했습니다. Cypress를 사용할 기회가 없다면 확인해 보는 것이 좋습니다.
테스트를 포팅하는 이 프로세스의 일부로 Cypress가
console.error
명령문에 대한 테스트에 실패하지 않았음을 깨달았습니다. 이에 대한 두 가지 쉬운 해결 방법이 있습니다. 1) cypress/support/index.js
파일에 약간의 논리를 추가하거나 2) cypress-fail-on-console-error
패키지를 추가합니다. 두 옵션 모두 완전히 유효합니다. 우리는 옵션 1이 우리에게 효과가 있었고 프로젝트에 다른 개발자 종속성을 추가할 필요가 없었기 때문에 결국 옵션 1을 선택했습니다.방법 1 - commands.js 업데이트
첫 번째 방법은
cypress/support/index.js
에 다음 로직을 추가하는 것입니다. 이 솔루션은 Ryan Yost의 게시물Advanced Cypress Tips에서 수정되었습니다.// /cypres/support/index.js
Cypress.on("window:before:load", win => {
cy.stub(win.console, "error").callsFake(msg => {
// log out to the terminal
cy.now("task", "error", msg)
// log to Command Log and fail the test
throw new Error(msg)
})
})
다음은 진행 중인 작업에 대한 안내입니다.
window:before:load
이벤트를 수신하여 앱의 코드가 실행되기 전에 window
에 연결하고 수정합니다console.error
메서드를 스텁 아웃하고 callsFake
연결합니다.cy.now()
는 Ryan Jost가 그의 blog post에서 논의한 약간의 해킹이지만 이를 통해 오류가 터미널에 로그아웃되도록 할 수 있습니다. cy.now()
에 대한 자세한 정보는 here에서 찾을 수 있습니다.console.error
의 내용을 가로채서 적절한 오류로 throw합니다. 방법 2 - cypress-fail-on-console-error 패키지 사용
이 방법도 매우 간단하며 project repo.에서 읽을 수 있는 몇 가지 추가 구성 옵션이 있습니다.
패키지 설치
# npm
npm install cypress-fail-on-console-error --save-dev
# yarn
yarn add cypress-fail-on-console-error -D
그런 다음
cypress/support/index.js
를 약간 조정합니다.// /cypress/support/index.js
import failOnConsoleError from "cypress-fail-on-console-error"
failOnConsoleError()
그게 다야!
질문이나 의견이 있으시면 아래로 연락주세요! 이 게시물이 도움이 되셨다면 리트윗이나 공유 부탁드립니다! 새 게시물을 발표할 때마다 sign up for updates 할 수도 있습니다.
Reference
이 문제에 관하여(Cypress의 console.error에 대한 테스트 실패), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tylerben/catching-console-error-statements-in-cypress-1b4g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)