2017-12-10 1 views
0

컨트롤러 사양이 부적절하고 현재 권장 사양이 사양 및 요청 사양을 사용한다는 내용을 읽었습니다. 필자는 해피 패스 테스트를 위해 기능 사양이 실제로 잘 작동하고 있음을 확인했지만 테스트하고 싶은 예외적 인 경우에 약간의 어려움을 겪고 있습니다. 예를 들어 사용자가 소유 한 자원의 색인이 있습니다. 이 목록에는 각 리소스를 삭제하는 단추가 포함되어 있습니다. 사용자는 자신의 리소스 만 볼 수 있습니다. 나는 다른 누군가에게 속한 것을 파괴하려고 시도하는 시험이 실패하기를 원합니다. 문제는 목록에 다른 사람의 항목이 포함되지 않기 때문에 카피 바라에게 클릭을 알리는 적절한 링크가 없다는 것입니다. 컨트롤러 테스트에서 리소스 경로에 직접 DELETE을 발급 할 수 있지만 기능 사양에서는 옵션이 아닌 것으로 알 수 있습니다. 내가 놓친 게 있니? 행복한 경로를 벗어난 적용 범위를 원한다면 요청 사양을 구현해야합니까? 내 API 끝점을 처리하기위한 요청 사양을 예약하기를 원했습니다.예외적 인 시나리오를위한 기능 사양

+0

나는 호기심에 휩싸여 있지만 '컨트롤러 사양이 좋지 않고 현재 권장 사양과 사양을 사용하는 것이 좋습니다'라는 링크를 공유 할 수 있습니까? – AntonTkachov

+0

https://everydayrails.com/2016/08/29/replace-rspec-controller-tests.html 여기에는 레일과 rspec 팀이 이에 대해 추천합니다. 컨트롤러 테스트를 지원하는 도우미 중 일부는 레일 5에서도 제거되었습니다. –

+0

내가 실제로 코멘트에 링크 된 기사에 동의하지 않으며 컨트롤러 테스트를 계속 수행하는 데는 잘못된 것이 없습니다. 컨트롤러 동작 논리가 의도 한대로 작동하고 해당 출력 (인스턴스 변수)이 나머지 시스템과 격리되어 올바르게 생성됩니다. 덧붙여서'assigns'와'assert_template'는 별도의 보석에서 사용할 수 있습니다 (레일즈 컨트롤러 테스팅). – David

답변

0

내 관점에서 권한 사양을 기능 사양으로 구현해서는 안됩니다. 당신의 생각은 완전히 이해가되며, 실제로 확인할 수있는 유일한 것은 다른 사용자가 만든 엔티티가 보이지 않는다는 것입니다. 당신의 논리적 어려움은 다른 시나리오를 통해 테스트되어야한다는 +1 포인트와 같습니다. 또한 ... 기능 사양은 비싸고 필자는 기능에서 그런 '깊은'테스트를하지 않을 것입니다.

+0

악의적으로 행동하는인가 된 사용자는 볼 수없고 할 수없는 리소스를 쉽게 삭제하려고 시도 할 수 있다고 "실제로 확인할 수있는 유일한 것"과 관련하여 나는 동의하지 않습니다. 그 (것)들에 속하지 않는다 - 당신은 진짜로 자원에 입증이 있어야하고 그런 대본을 시험해야한다. – David

+0

@David 기능 사양으로 DELETE를 (를) 테스트 하시겠습니까? 항상 동일한 품질의 요청 사양으로 수행 할 수 있지만 속도는 더 빠릅니다. – AntonTkachov

+0

내가 오해했다고 생각합니다. 컨트롤러 테스트의 관점에서 이야기하고있었습니다. 인증을 위해 테스트 할 필요가 없다는 것을 나타 냈습니다. . – David

관련 문제