컨트롤러 사양이 부적절하고 현재 권장 사양이 사양 및 요청 사양을 사용한다는 내용을 읽었습니다. 필자는 해피 패스 테스트를 위해 기능 사양이 실제로 잘 작동하고 있음을 확인했지만 테스트하고 싶은 예외적 인 경우에 약간의 어려움을 겪고 있습니다. 예를 들어 사용자가 소유 한 자원의 색인이 있습니다. 이 목록에는 각 리소스를 삭제하는 단추가 포함되어 있습니다. 사용자는 자신의 리소스 만 볼 수 있습니다. 나는 다른 누군가에게 속한 것을 파괴하려고 시도하는 시험이 실패하기를 원합니다. 문제는 목록에 다른 사람의 항목이 포함되지 않기 때문에 카피 바라에게 클릭을 알리는 적절한 링크가 없다는 것입니다. 컨트롤러 테스트에서 리소스 경로에 직접 DELETE
을 발급 할 수 있지만 기능 사양에서는 옵션이 아닌 것으로 알 수 있습니다. 내가 놓친 게 있니? 행복한 경로를 벗어난 적용 범위를 원한다면 요청 사양을 구현해야합니까? 내 API 끝점을 처리하기위한 요청 사양을 예약하기를 원했습니다.예외적 인 시나리오를위한 기능 사양
답변
내 관점에서 권한 사양을 기능 사양으로 구현해서는 안됩니다. 당신의 생각은 완전히 이해가되며, 실제로 확인할 수있는 유일한 것은 다른 사용자가 만든 엔티티가 보이지 않는다는 것입니다. 당신의 논리적 어려움은 다른 시나리오를 통해 테스트되어야한다는 +1 포인트와 같습니다. 또한 ... 기능 사양은 비싸고 필자는 기능에서 그런 '깊은'테스트를하지 않을 것입니다.
악의적으로 행동하는인가 된 사용자는 볼 수없고 할 수없는 리소스를 쉽게 삭제하려고 시도 할 수 있다고 "실제로 확인할 수있는 유일한 것"과 관련하여 나는 동의하지 않습니다. 그 (것)들에 속하지 않는다 - 당신은 진짜로 자원에 입증이 있어야하고 그런 대본을 시험해야한다. – David
@David 기능 사양으로 DELETE를 (를) 테스트 하시겠습니까? 항상 동일한 품질의 요청 사양으로 수행 할 수 있지만 속도는 더 빠릅니다. – AntonTkachov
내가 오해했다고 생각합니다. 컨트롤러 테스트의 관점에서 이야기하고있었습니다. 인증을 위해 테스트 할 필요가 없다는 것을 나타 냈습니다. . – David
나는 호기심에 휩싸여 있지만 '컨트롤러 사양이 좋지 않고 현재 권장 사양과 사양을 사용하는 것이 좋습니다'라는 링크를 공유 할 수 있습니까? – AntonTkachov
https://everydayrails.com/2016/08/29/replace-rspec-controller-tests.html 여기에는 레일과 rspec 팀이 이에 대해 추천합니다. 컨트롤러 테스트를 지원하는 도우미 중 일부는 레일 5에서도 제거되었습니다. –
내가 실제로 코멘트에 링크 된 기사에 동의하지 않으며 컨트롤러 테스트를 계속 수행하는 데는 잘못된 것이 없습니다. 컨트롤러 동작 논리가 의도 한대로 작동하고 해당 출력 (인스턴스 변수)이 나머지 시스템과 격리되어 올바르게 생성됩니다. 덧붙여서'assigns'와'assert_template'는 별도의 보석에서 사용할 수 있습니다 (레일즈 컨트롤러 테스팅). – David