2017-12-07 1 views
0

다음 사용자 정의 명령을 내 cypress/support/commands.js 파일에 작성했습니다.호출시 Cypress 사용자 정의 명령이 인식되지 않습니다.

Cypress.Commands.add("login", (username, password) => { 
    cy.request({ 
     method: 'POST', 
     form: true, 
     url: '/test/login/', 
     body: {'username': username, 'password': password} 
    }) 
}) 

로그인 기능을이 사용자 지정 명령으로 이동하기 전에 테스트를 통과하고 로그인 작업이있었습니다. cy.login (testuser, testpwd)을 사용하여 내 사양에서 호출하고 있지만 다음 오류 메시지가 표시됩니다. TypeError : cy.login이 함수가 아닙니다. 테스트 파일이 평가되기 전에 /cypress/support/commands.js가로드되는 docs say이 있으므로 사용자 정의 명령을 단순히 배치하면 명령을 사용할 수 있다고 가정했습니다. 로컬 (GUI) 테스트 러너를 통해 테스트를 실행하고 있습니다.

+0

'cypress/support'의'index.js' 파일에이 코드 라인이 있음을 확인할 수 있습니까? 'import "./commands"' –

+0

예, 이제 index.js에서 해당 줄의 주석을 제거했습니다. –

답변

1

index.js에있는 모든 코드 및 참조 모듈이 테스트 파일 전에로드됩니다. 따라서 index.js 파일에 commands.js을 (를) 참조해야합니다. 그러나 commands.js 모듈을 테스트 파일에 직접 가져올 수는 있지만 모든 테스트 파일에 모듈을 포함시켜야합니다. 권장 접근 방식은 index.js 파일에 포함시키는 것이고 테스트 파일을 명시 적으로 참조 할 필요는 없습니다.

+0

감사합니다. [이 섹션의 문서] (https://docs.cypress.io/api/cypress-api/custom-commands.html#Syntax)에는 다음과 같이되어 있습니다 : "커맨드를 정의하거나 덮어 쓸 수있는 좋은 장소는 사이프러스/support/commands.js 파일은 테스트 파일이 평가되기 전에로드되기 때문에. " 그로부터 커맨드를 가져 오지 않는 것 같았습니다. js가 필요했기 때문에 그것을 시도한 적이 없었습니다. 비슷하게 index.js의 경우, "spec 파일 하나 하나에이 파일을 임포트 할 필요가 없으므로"어떤 스펙을 실행하기 전에 import되었다고합니다.하지만 index.js를 가져와야합니다. , 가져 오기 commands.js. –

관련 문제