2011-07-26 2 views
10

드래그 앤 드롭, 호버, 더블/싱글 클릭, 캔버스 그리기와 같은 사용자 상호 작용을 테스트하는 데 유용한 javascript 용 테스트 라이브러리를 찾고 있습니다. jspec과 jasmine을 포함한 몇 가지 라이브러리를 살펴 보았지만 둘 다 단위 테스트를 기반으로하는 것 같습니다.더 높은 레벨의 자바 스크립트 이벤트 테스트

위의 라이브러리 중 하나가 이러한 테스트를 지원한다는 사실을 간과한다면 나는 예제를 좋아할 것입니다.


편집 그래서 나는 지난 밤에보고를 많이했고, 정말 아무것도 건너하지 않았다. 가능하다면 capybara 스타일 인 재스민과 같은 상위 레벨에서 사용자 상호 작용을 에뮬레이트하는 것이 가능하면 DOM과의 상호 작용을 그냥 가짜로 만듭니다.

실제로 마우스를 에뮬레이트하는 라이브러리를 사용하고 싶습니다. 마우스 이동> 마우스 위로 이벤트 체인.

그런 마법 창조물이 있습니까?

포스트 현상금 편집 그래서


, 내가 JS 테스트 라이브러리와 실험을 계속하고 주위 HTML5 캔버스를 사용하여 작동 방법에 정말 행복하지 않다있다. 재스민은 캔버스를 초기화하지 않으므로 캔버스에서 재스민 이벤트를 테스트 할 수 없습니다.

실제로 애플리케이션 코드를 테스트하기보다는 "html"픽스처를 사용해야한다는 점이 마음에 들지 않습니다. js를 앱에 통합하려는 경우 이는 거꾸로 보입니다. 사양 테스트를 위해서는 의미가 있지만 웹 프레임 워크의 BDD 테스트에서는 실제로 테스트를 위해 응용 프로그램보기를 사용하도록 요구합니다.

또 괴물이 존재합니까, 구름에 머리가 있습니까? 자바 스크립트에서

+5

Selenium이나 Watr을 사용해 보셨나요? –

+0

Selenium을 사용했지만 Js 용 셀렌 라이브러리에 대해 잘 모릅니다. 다른 테스트 프레임 워크를 구동하기 위해 웹 드라이버에 익숙했습니다. Watr 나는 단지 구글에 가려고했는데 링크가 좋을만큼 아무 것도 얻지 못했습니다. Ty – austinbv

+0

죄송합니다. 철자가 잘못되었습니다. http://watir.com/ –

답변

2

PhantomJS 또는 ZombieJS을 사용해 보셨습니까? 특히 팬텀에 관해 좋은 점을 들었습니다.

=============

또 다른 제안 : 셀레늄 플러그인/매크로. www.seleniumwiki.com/selenium-rc/selenium-mousedownat-mousemoveat-and-mouseupat-example/ 또는 glauche.de/2009/09/09/drag-drop-with-selenium/.

0

에뮬레이션 사용자의 행동 그러나 표준에서 읽기 전용을 준수 브라우저를하는 Element에에 발송하고, 그 중 가장 중요한 속성을 수정, 사용자 정의 Event Object의를 만들 필요합니다. https://developer.mozilla.org/en/DOM/Event/UIEvent/MouseEvent

  • IE에서 https://developer.mozilla.org/en/DOM/element.dispatchEvent
  • https://developer.mozilla.org/en/DOM/Event

    • 그래서, 나는 당신이 생각하고있는 것은 가능하다고 생각하지 않습니다.


      편집 : 분명히 프로그래밍 정의를 만들 것입니다 주어진 일정에 따라 자바 스크립트 프로그램을 작성 할 수있을 것입니다, 그것에 대해 생각 (그리고 셀레늄 파이어 폭스 확장 기능에 대한 문서로보고) 사용자 동작을 시뮬레이트하는 Event Object.

      그러나 셀레늄이 무엇인지 또는 더 중요한 것은 이것이 신뢰할 수있는 방법인지 여부는 확실하지 않습니다. 아소 그것은 본질적으로 당신이 배제한 "faking interaction with the DOM"을 의미합니다.

      Btw, 올바르게 가져 오십시오 : 기본적으로 애플리케이션의 JavaScript 부분을 테스트하기위한 JavaScript 라이브러리가 필요합니다. 하지만 DOM 엔진 수준이 아닌 브라우저 수준에서 작업하기를 원합니다. 즉 브라우저에서 캡처 한 것처럼 실제 사용자 상호 작용을 시뮬레이션 할 수 있습니까?

  • +0

    이벤트 개체의 속성을 수정하지 마십시오. 이벤트 자체를 처음 초기화 할 때 속성 값으로 초기화해야합니다. 예 : e = document.createEvent ("UIEvent"); e.initMouseEvent (...). 또한 이벤트는 요소뿐만 아니라 모든 노드 또는 AbstractView (예 : 문서, 창)에서 작동합니다. –

    +0

    @ 엘리 그 : 그게 내가 여기서 말하는거야. 당신은 그들을 수정하지 않습니다. 그러나 OP가하고자하는 것을 시도 할 때해야합니다. 두 번째 것은 약간의 부정확 한 것 같습니다 : 당신은 다른 어떤 것에도 '이벤트'를 등록 할 수 없으며 '요소'(또는 예외가있는 경우 'AbstractView')도 디스패치 할 수 없습니다. – FK82

    +0

    capybera와 selinum 같은 것들이 브라우저에서 어떻게 마우스 이벤트를 등록합니까? – austinbv

    -1

    이동하여 jQuery 및 Dojo를 참조하십시오. 또는 jsfiddle 사이트에 가서 살펴보십시오. 그들은 일련의 라이브러리를 가지고 있으며 라이브러리를 다운로드하지 않고 온라인으로 테스트 할 수 있습니다.

    +1

    올바른 유형의 테스트는 생각하지 못합니다. – austinbv

    0

    jasmine 및 jQuery를 사용하여 마우스 이벤트가 필요한 코드를 성공적으로 테스트했습니다.

    http://api.jquery.com/category/events/event-object/

    그냥 생성하고이 같은 트리거 이벤트 :

    // Create a new jQuery.Event object with specified event properties. 
        var e = jQuery.Event("keydown", { keyCode: 64 }); 
    
        // trigger an artificial keydown event with keyCode 64 
        jQuery("body").trigger(e); 
    

    그런 다음 속성을 확인하는 재스민를 사용합니다. 당신이 애니메이션을 확인해야하는 경우 그냥 참고로,이 같은 시간을 조롱 할 수 있습니다

    //http://groups.google.com/group/jasmine-js/browse_thread/thread/dbdc5ad1c1514322

    beforeEach(function() { 
        jasmine.Clock.useMock(); 
    }); 
    //... call the code that calls setTimeout 
    jasmine.Clock.tick(500); // advance 500 msec 
    
    2

    이 문제에 대한 유일한 좋은 해결책은 DOH Robot입니다. 자바 애플릿을 실행하여 실제 자바 스크립트 이벤트를 발생시키고 실제 사용자 동작 (드래그 앤 드롭 테스트 포함)을 에뮬레이트합니다.

    DOH는 도장에 의존하지 않으므로 모든 프로젝트에서 사용할 수 있습니다. 불행히도 널리 사용되지는 않지만 테스트 프레임 워크가 정말 멋지다.