2017-12-04 12 views
0

이 응용 프로그램은 Capybara에서 Minitest on Rails 4를 사용하고 있습니다.레일즈에서 테스트를 위해 websocket 메시지를 스텁 (stub) 할 수 있습니까?

WebSocket 연결을 스텁 (stuck)하는 응용 프로그램 (예 : Faye를 클라이언트로 사용함)에서 특정 메시지를 반환하는 기능 (예 : Webmock을 사용하는 것처럼)을 작성하고 싶습니다.

이것이 가능합니까? 그렇다면 예제를 제공해 줄 수 있습니까? 나의 연구는 어떤 예도 보여주지 않았다.

+0

당신의 연구는 기능 테스트에서 당신이해야 할 일이 아니기 때문에 어떤 예제도 보여주지 못했습니다. 기능 테스트는 앱이 원하는 결과를 생성하는 데 필요한대로 데이터를 구성한 다음 브라우저를 통해 모든 상호 작용이 수행되는 엔드 투 엔드 블랙 박스 테스트로 간주됩니다 (조롱/스텁 없음). 외부 앱의 응답을 설정해야하는 경우 해당 앱의 가짜 앱을 구현하여 대신 사용하십시오. –

+0

"해당 앱을 위조하여 대신 사용하십시오." 모의/스텁이하는 일이 아닌가요? 내 테스트가 실제 외부 서비스에 의존하지 않는 것이 좋습니다. –

+0

아니요 - 모의 또는 스텁이 실제 앱 코드를 변경합니다 (결과에 원숭이 패치 적용). 가짜는 외부 서비스를 대체/위장하는 별도의 작은 앱이므로 피싱 (puffing)과 같은 프로그래밍 가능한 프록시를 사용하여 가짜를 구현할 수도 있습니다. billy - 웹 소켓에서는 작동하지 않을 수도 있습니다. –

답변

1

당신의 연구는 기능 테스트에서 당신이해야 할 일이 아니기 때문에 어떤 예제도 보여주지 못했습니다. 기능 테스트는 원하는 결과를 생성하는 데 필요한 데이터를 구성한 다음 모든 상호 작용이 브라우저를 통해 수행되는 엔드 투 엔드 블랙 박스 테스트로되어 있습니다 (기술적으로 응용 프로그램 코드를 변경하는 모의/스터 빙 없음) . 또한 브라우저와 타사 서비스 간의 연결이 포함 된 경우 앱을 모의 할 수있는 곳이 없습니다.

브라우저에서 puffing-billy와 같은 프로그래밍 가능한 프록시를 사용하여 웹 소켓 연결을 스터핑하는 것이 가능할 수도 있지만 일반적으로 테스트 용 타사 서비스 (sinatra app 등)의 작은 가짜 버전을 생성하는 것이 더 깔끔하고 사용자 정의 응답을 작성해야 할 때 원래 서비스가 아닌 브라우저를 가리 키십시오. 또한 이미 사용중인 서비스 (가짜 스트라이프, 가짜 s3 등)에 따라 많은 가짜가 있으며, 원하는 기능을 제공 할 수 있습니다.