2009-06-16 4 views
4

테스트 마우스 클릭 그래서 주어진 입력에 대해, 그QUnit 유닛 테스트 : 나는 다음과 같은 HTML 코드가

  1. 은 (그 ViewRecord/GetSoftwareChoice이 경우)
  2. 정확한 URL을 호출
  3. 출력이 예상됩니다 (이 경우 function(data)). 제대로 작동합니까?

QUnit으로 어떻게하면 좋을까요?

편집 : 나는 QUnit examples을 읽었지 만, 그들은 AJAX 상호 작용이없는 간단한 시나리오를 다루는 것 같습니다. 그리고 비록 there are ASP.NET MVC examples이지만 AJAX 호출에 대한 서버의 출력을 실제로 테스트하고 있다고 생각합니다. 즉, AJAX 응답이 아니라 서버 응답을 테스트하고있는 것입니다. 내가 원하는 것은 클라이언트 측 응답을 테스트하는 방법입니다.

+0

많지 않음, 나는 두려워한다; 나는 시작하는 법을 정말로 모른다. – Graviton

답변

0
  1. URL에 전달 된 것으로 주장하는 테스트에서 $ .getJSON을 재정의하십시오. 이 작업을 많이해야하는 경우 getJSON을 재정의하고 url을 선언하는 도우미 함수를 만들 수 있습니다. 어설 션 후에 기본 구현을 호출해야합니다. 또한 url을 지정한 후에 테스트를 중지하십시오.

테스트를 시작하는 함수로 전달 된 콜백을 감싸고 콜백을 호출합니다.

테스트를 시작하십시오.

#username을 클릭하십시오.

편집 :이 도움이 될

: QUnit with Ajax, QUnit passes the failing tests

+0

OK, 더미 데이터를 다시 전달할 수 있습니까? – Graviton

+0

'패스 백'이란 무엇을 의미합니까? 더미 데이터는 무엇입니까? – mkoryak

+0

더미 데이터 = 서버에서 데이터가 반환됩니다. – Graviton

6

당신은 함수 호출에 당신은 그럼 그냥 그 함수를 호출 할 수 귀하의 테스트에서 익명 이벤트 핸들러를 대체 할 수 있습니다.

그래서 대신

$("#username").click(function() { 
    $.getJSON("ViewRecord/GetSoftwareChoice", {}, function(data) { 
    // use data to manipulate other controls 
    }); 
}); 

당신이 할 수있는 일 당신의 QUnit 테스트에서 다음

function doSomething() { 
    $.getJSON("ViewRecord/GetSoftwareChoice", {}, function(data) { 
    // use data to manipulate other controls 
    }); 
} 

$("#username").click(doSomething); 

그리고

처럼 당신은 당신은 항상 실제 만들고 싶어하지

doSomething(); 
+0

나는 이것이 최고라고 생각한다. $ (...) 셀렉터를 사용하면 코드가 훨씬 약해지고 태그에 묶일 수 있습니다. –

0

호출 할 수있다 아약스 전화. 이 경우에는 mockjax가 훌륭한 솔루션입니다. 테스트에서 반환 값을 지정할 수 있습니다. 따라서 구현이나 다른 파일을 요구하지 않고도 정보를 요청할 수 있습니다.귀하의 경우에는

가이 같은 수 있습니다 :

$.mockjax({ 
    url: '/ViewRecord/GetSoftwareChoice', 
    responseTime: 750, 
    responseText: { 
    status: 'success', 
    result: 'your data can be put here' //in that case it is data.result with value string 
    } 
}); 

귀하의 아약스 호출의 요청을 테스트 할 수 있습니다, 당신은 클릭을 테스트 할 수 있습니다 및 다른 동작을 테스트 할 수 있습니다.

ps. ajax 호출을 결과로 "대체"합니다. Ps2. Mockjax는 여기에서 찾아 낼 수있다 : https://github.com/appendto/jquery-mockjax

관련 문제