나는 캐스퍼 테스터 모듈을 사용하고, 나는이 구조를 가지고 :CasperJS에서 언제 test.done()을 호출해야합니까?
casper.start();
...(various then() and wait() calls)
casper.then(function(){
test.done();
});
casper.run();
그런 식으로 (나는 문제를 해결하기 위해 노력했습니다 간헐적 타이머 문제를 제외하고) 잘 작동 것처럼 그 일을. 나는 기본적으로 같은 생각했던 shown in the casper docs입니다 다음, 어느 위를 변경하는 경우
는 :
casper.start();
...(various then() and wait() calls)
casper.run(function(){
test.done();
});
후 내가 얻을 "당신이 어떤 테스트를 실행하지 않은 것 같은데을 경고한다.". 내가 아직 assert()
전화가 없었기 때문에 그것이 실현되었습니다! 나는 무언의 주장을 추가하고 경고가 사라졌으며, 이제는 얼마나 많은 테스트가 실행되는지에 대한 보고서를 받기 시작한다. (간헐적 인 타이머 문제가 남아있어서 다른 것이 틀림 없다.)
내가 두 번째 방법으로 해왔어야한다는 것과 분명히 차이점이 있습니다.
누군가가 차이점을 설명 할 수 있습니까? 왜 첫 번째 제대로 작동하지 않았습니까? CasperJS 테스트가 어떻게 작동하는지 더 깊이 이해하게되기를 바랍니다.
안녕하세요, 당신이 어떤 해결책을 찾았나요? 나는 똑같은 문제가있다. 고맙습니다. – DzeryCZ
@DzeryCZ 내 질문의 후반부가 해결책이라고 생각합니다. 즉, test.done()은 run() 함수에서 수행되어야하며, * 및 *는 적어도 하나의 어설 션을 정의해야합니다. 아직도 이해할 수없는 것은 중요한 이유입니다. –
해결책에 감사드립니다. 이유는 그 콜백이 호출 된 순서와 관련이 있다고 생각합니다. 주어진 콜백이 실행되기 전에 casper.run이 끝날 때 모든 웹 페이지를 닫는 등의 정리 작업이있을 것입니다. 그렇지 않으면 순서가 잘못되어 호출됩니다. . – encrest