2016-07-08 1 views
1

현재 rspec에 현재 몇 가지 기능을 테스트하고있는 몇 가지 기능 사양이 있습니다. 이러한 라이브러리에서 Modernjur을 사용하여 주로 touchevents 만 감지합니다. Poltergeist와 PhantomJS를 사용하고 있기 때문에 Modernizr.touchevents은 다른 조건문을 실행하기 위해 false를 반환하는 것을 선호하지만 항상 true를 반환합니다.Rspec 기능 사양 중에 Jubascript 스터브 개체를 만드는 방법은 무엇입니까?

명시 적으로 Modernizr.touchevents 또는 Modernizr을 모두 함께 스텁링 할 수있는 방법이 있습니까?

나는 다음과 같은 시도 :

  1. Modernizr.touchevents = false
  2. Modernizr.touchevents = {}
  3. Modernizr = {}
  4. 은 테스트 동안 모더 나이저 라이브러리를 포함하지 마십시오,하지만 내 테스트는 내가 모더 나이저가있을 것으로 예상하고 있기 때문에 실패합니다.

Modernizr가 아니더라도, 테스트 할 때 기능에 신경 쓰지 않는다면 어떻게 javascript 라이브러리를 작성해야합니까?

감사

편집 :

지금까지 잘 단지 수행하는 것입니다, Modernizr.touchevents = false;? 모더니니즈가 내가 이것을 설정하면 다시 초기화 할 수 있을까? 아니면 영구적입니까?

편집 2 :

나는 심령과 phantomjs을 사용하고 있기 때문에, 모더 나이저는 터치 디바이스한다고 생각합니다. 나는 그것을 바꿀 수 있기를 바란다.

답변

0
rspec-rails docs에서

:

기능 사양은 응용 프로그램을 통해 기능의 조각을 행사하기위한 것 높은 수준의 시험이다. 그들은 외부 인터페이스 (보통 웹 페이지)를 통해서만 응용 프로그램을 구동해야합니다.

사용자의 기능 사양은 사용자가 UI를 통해 수행 할 수없는 작업 (예 : URL 입력, 링크 클릭 등)을해서는 안됩니다. 조롱/스터 빙 자바 스크립트는 이러한 종류의 테스트에는 적합하지 않습니다.

+0

나는 폴터 지스트 (poltergeist)와 팬텀 (phantomjs)을 사용하고 있기 때문에, 모더니지 (Modernizr)는 터치 장치라고 믿고있다. 나는 그것을 바꿀 수 있기를 바란다. – reid

+0

나는 폴터 가이스트에게 익숙하지 않지만 User-Agent를 비 터치 장치로 사용할 수있는 값으로 설정할 수 있어야합니다. – zetetic

관련 문제