2016-11-30 5 views
0

, 나는 레일에 내 request.host 내 연구에서Rspec/Capybara/Poltergeist : URL을 스텁하는 방법은 무엇입니까? 내 시험

'www.example.com'이외의 무언가로 표시되도록, 대부분의 사람들이 제안 가짜/테스트가 사용하는 URL을 스텁 싶습니다 capybara의 app_host을 변경하지만 기본 드라이버를 사용할 때만 작동합니다. 치과 의사를 사용할 때 실제로 해당 URL로 이동합니다.

내가 사용할 수 있는게 더 있습니까?

+1

Capybara/Poltergeist를 사용할 때 전체 스택을 테스트하는 기능 테스트를 수행하고 있습니다. 그렇게 할 때 어떤 것을 찌르거나 모의하려고해서는 안됩니다 (어쩌면 컨트롤러 사양을 원하십니까?). 또한 기본 랙 테스트 드라이버를 사용하지 않을 때는 www.example.com이 아닌 앱의 request.host에 '127.0.0.1'이 표시되어야합니다. Capybara.app_host를 원하는 것으로 변경할 수 있지만 로컬 DNS가 127.0.0.1 (/ etc/hosts 항목 등)을 확인해야합니다. 어쩌면 정확히 무엇을하려고하는지 조금 더 설명해야합니다. –

+0

그래, DNS를 가지고 127.0.0.1로 해결하면 좋을 것 같다. (개발 과정에서 일어나는 일이다.) CircleCI와 같은 CI에서 어떤 일이 생길지 약간 걱정된다. 그런 서비스를 사용하여 호스트 파일을 설정하는 방법이 있습니까? 내 최선의 방법 이겠지. – amclelland

+0

변경하려는 도메인 이름이 필요한 정확히 테스트하려는 것은 무엇입니까? –

답변

0

Capybara/Poltergeist를 사용할 때 전체 스택을 테스트하는 기능 테스트를 수행하고 있습니다. 그렇게 할 때 어떤 것을 찌르거나 모의하려고해서는 안됩니다 (어쩌면 컨트롤러 사양을 원하십니까?).

또한 기본 랙 테스트 드라이버를 사용하지 않을 때는 www.example.com이 아닌 앱의 request.host에 '127.0.0.1'이 표시되어야합니다. Capybara.app_host를 원하는 것으로 변경할 수 있지만 로컬 DNS가 127.0.0.1 (/ etc/hosts 항목 등)을 확인해야합니다. 대부분의 CI 시스템에서 DNS 해상도를 지정할 수도 있습니다. - https://circleci.com/docs/configuration/#hosts

+0

이 "스텁이없는"사고 방식에는 한계가 있다고 생각합니다. 예 : 지불을 테스트하는 경우 실제 돈을 보내지 않을 것입니다. 나는 외부 의존성 (지불 프로세서, AWS 등)이 스텁 될 수 있다고 생각한다. 비록 내가 틀렸다면 나를 바로 잡아라. –

+0

@MarosHluska 부분적으로 정확함 - 기능 테스트에서는 지불을 처리하는 서비스 (예 : https://github.com/thoughtbot/fake_stripe)에 위조품을 사용합니다. 기능 테스트 (조롱/스터 빙)에서 코드를 수정하는 작업을하고 싶지 않으면 프로덕션 코드가 실제로 테스트되었는지 확실치 않습니다. –