5

강력하게 형식화 된 언어로 단위 테스트를 작성 했으므로 그것에 대해 잘 이해하고 있습니다. 특정 브라우저에서 특정 기능이 제대로 작동하는지 확인하기 위해 JavaScript로 단위 테스트를 작성하면 수동 테스트로 되돌아갑니다. 나는 그것이 어떻게 작동하는지 전혀 모른다. JavaScript는 데이터와 프레젠테이션 사이의 간격을 좁히고 더 대화식으로 만들기위한 것이기 때문에. 브라우저 내에서 모든 일이 일어나고 있으며 UI와 관련이 있습니다. 이 시험은 나에게 "하드 코딩"처럼 보일 무엇 실종 것이 있다는 것입니다 쓰기다른 브라우저에 대한 JavaScript의 일반적인 단위 테스트 개념/사례?

run function A 
check DOM if certain element has been created 
    if not then fail 
check if element is visible 
    if not then fail 
check for the content of that element 
    if null then fail 
etc… 

: 그래서 내가 단위 테스트를 작성하려고한다면 나는 (의사 코드) 같은 것을 쓰는 것이 가정입니다 테스트는 제대로 렌더링되었는지 여부를 알 수 없으며 순수한 기능 테스트 만 수행합니다. 그래서 누군가 자바 스크립트의 적절한 테스트 절차, 빌드 자동화 및 일반적인 개념에 대해 설명 할 수 있는지 궁금합니다. 나는 단지 John Resig's project testswarm을보고 있었지만 아직 그게 무엇인지 알아 내지 못했습니다. 나는 또한 바로 QUnit에 대해 읽고있다.

저는 시작할 수있는 개념/실습에 대한 소개 자료를 찾고 있습니다. 그들은 개념에 대한 좋은 소개가 없다면 특정 라이브러리 나 도구를 찾고 있지 않습니다.

감사합니다.

답변

4

이 확실히 지금 웹 개발의 복잡하고 역동적 인 지역입니다. 내 마음 속에서 JS 테스트의 몇 가지 중요한 특징은 다음과 같습니다.

  • 순수 유닛 테스트는 일반 자바 스크립트 코드를 테스트합니다. a+b=3 또는 그 무엇이든지 주장 할 수 있습니다. 우리는이 카테고리에 맞는 몇 가지 문제 만있었습니다. 토론 옵션에는 JSUnit (JUnit 포트)에 대한 대안이 많이 있습니다. 그것들은 TDD 대 BDD와 그 범주 내에서의 명명 선택으로 분류됩니다.
  • 자바 스크립트 + DOM 테스트. 요즘 쓰여지는 코드의 상당 부분은 DOM 조작에 관한 것입니다. 예. assertEqual('<a><div /></a>', $('div').wrap('a')); DOM 기반 JS 테스트의 경우 브라우저 내 테스트로 이동하거나 env.js와 같은 라이브러리를 사용해야합니다.
  • 도 & 스터 빙 (연기), 비동기 및 다른 조력자가 조롱하는

테스트를 실행할 수있는 두 곳이 있습니다

  • 브라우저 외부 테스트 (일반적으로 빠르게 실행하는, 그래서 그들은
  • 에서 브라우저 테스트 (느린 더 복잡)는 TDD 환경에서의 사용되지만, 제공 될 수있는 더 정확한 브라우저 간 테스트 결과)

Selenium은 브라우저에서 실행되므로 통합 테스트에 적합합니다. 다른 일을하지 않으면 좋은 출발점이됩니다. 몇 년 전부터 있었으며 가장 널리 사용되는 브라우저와 언어를 지원합니다. a screencast like this을 보는 것이 도움이 될 수 있습니다. 그리고 this documentation은 테스트 결과를 보여줍니다. 다른 튜토리얼과 스크린 캐스트도 꽤 많이 있지만, 많은 것들은 신경 쓰지 않는 기술적 인 doodoo에서 느려지므로 선택해야합니다.

Screw.Unit(function() { 
    describe("Your application javascript", function() { 
     it("accesses the DOM from fixtures/application.html", function() { 
      expect($$('.select_me').length).to(equal, 2); 
     }); 
    }); 
}); 

이 하나의 테스트입니다 :

마지막으로, 여기에 도구 모음이 레일에 대한 아웃 - 오브 - 브라우저 테스트 (및 설명서 브라우저 테스트) 함께 뽑아입니다 blue ridge에서 예입니다 몇 가지 요소가 있다는 rspec-like 구문 테스트 테스트를 사용합니다. 희망이 도움이!

0

Selenium라고 들었습니다. 나는 그것을 사용한 적이 없지만 아마도 당신을 도울 수 있습니다.

셀레늄 원격 제어 (RC)는 여러 브라우저와 플랫폼에 테스트를 실행합니다. 기본 언어에서 테스트를 조정하십시오.

나는 또한 블로그 기사 : Unit Testing in JavaScript을 발견했으며, 그 내용은 Looking for a better JavaScript unit test tool입니다.

+0

고마워요.하지만 제가 찾고있는 특정 프레임 워크를 찾지 못했습니다. 자바 스크립트에서 단위 테스트를 수행하는 개념을 이해하고, 특히 다른 브라우저에 대해 이해하는 것입니다. – Jeff

+0

몇 가지 도구를 사용하기 전에는 필요한 것을 찾을 수 없습니다. JS가 전반적인 솔루션에 어떻게 적용되는지에 따라, 내가 테스트 한 사람들로부터 테스트 한 모든 사람들이 테스트 할 수있는 길을 가졌습니다. – montrealist

0

당신은 당신이 당신의 자바 스크립트에 대한 발표자 패턴을 사용하고 단순한 단위 테스트를 사용하는 것이 좋습니다 Test Swarm

+0

현재 알파 상태이며 오픈 소스 프로젝트에만 열려 있습니다. – nickf

1

를 사용하려고 할 수 있습니다. Google 테스팅 블로그에는 적절한 리소스가 있습니다. 내 모든 UI 코드에 대한

http://googletesting.blogspot.com/2009/02/with-all-sport-drug-scandals-of-late.html

내가 플렉스에서 이런 짓을했습니다 (액션) 프로젝트와 매우 잘 작동되었습니다 발견

여기 시작 했죠. 브라우저 공급 업체가 이미 광범위하게 테스트 한 것을 테스트하지 않도록 기능을 분리하려고합니다.

+0

또한이 링크를 확인합니다. 링크 된 게시물의 주석에서 발견했습니다 : http://www.atomicobject.com/pages/Presenter+First – camwest

2

jsTestDriver를 확인하십시오. 나는이 최고 중 하나라고 생각합니다 :

JsTestDriver의 목표는 자바 스크립트 테스트 러너를 구축하는 것입니다

되는 :

쉽게 연속 는 시스템 구축과 통합에 신속하게 여러 브라우저에 테스트를 실행 허용 완화 TDD 스타일 개발.

http://code.google.com/p/js-test-driver/

+0

아이디어를 얻으려면 지금 소개를 읽는 중입니다. – Jeff

관련 문제