2016-10-11 5 views
1

assertEqualsError를 catch하고 처리하려고합니다. 예 :casperjs에 대한 특정 assertEquals-Error를 처리하는 방법

var innerHTML = casper.getElementInfo(x('id("grid")/a[2]')).html; 
test.assertEquals(innerHTML, "GridContent", 
function success(){ 
},function fail(){ 
    captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid"))); 
}); 

이 예는 작동하지 않습니다. casper 코드가 생성되고 fail 함수는 일치하지 않는 요소의 부모 요소에 대한 스크린 샷을 생성해야합니다.

스크린 샷은 숫자가 증가해야하며 가능한 경우 테스트 행을 포함하여 오류가 발생해야합니다.

+0

예제는 waitForSelector fail 함수에서 파생됩니다 –

답변

0

Tester#assertEquals에는 비동기 적이기 때문에 성공 또는 실패 콜백이 없습니다. 이 정보를 얻기 위해 약간의 까다로운하지만 당신은 당신이 것을 수행하는 이벤트 핸들러 등록 할 수 있습니다 :

casper.on("fail", function(ev){ 
    if (ev.type === "assertEquals") { 
     captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid"))); 
    } 
}); 

명심 이것은 당신이 문서화되지 않은 CasperJS 기능을 사용하지 않고 제거 할 수있는 글로벌 이벤트 핸들러임을를 . 그러나 이것을 더 재사용 할 수있게하려면 다음과 같이 만들 수 있습니다.

var failFunc = null; 
casper.on("fail", function(ev){ 
    if (typeof failFunc === "function" && ev.type === "assertEquals") { 
     failFunc(); 
     failFunc = null; 
    } 
}); 

... 

casper.then(function(){ 
    failFunc = function(){ 
     captureSelector('screenshots/error%D%.png'.replace('%D%',25), x(id("grid"))); 
    }; 

    test.assertEquals(innerHTML, "GridContent") 
});