2012-08-09 4 views
10

자바 스크립트 단위 테스트를 위해 Phantomjs와 Jasmine을 사용하고 싶습니다. Phantomjs의 웹 사이트에서는이 문제를 처리하기 위해 별도의 것을 사용하도록 권장합니다. 구체적으로 PhantomJasmine입니다. PhantomJasmine을 다운로드하고 예제를 실행했습니다. 모든 것이 완벽하게 진행되었습니다. 그런 다음 var system = require('system'); 행을 example_spec.js의 맨 위에 추가했습니다. Phantomjs는 이제 "ReferenceError : 변수를 찾을 수 없습니다 : require"라는 예제를 실행하려고하면 오류가 발생합니다. 그래서 브라우저를 시작하는 것과 같은 일을하고 싶지만 jasmine과 phantomjs 구문을 결합 할 수없는 것 같습니다. Phantomjs를 사용하여 순수 재스민 만 실행할 수 있습니다. 같은 파일에서 어떻게 둘 다 사용할 수 있습니까? like :PhantomJS PhantomJasmine을 사용할 때 "변수를 찾을 수 없습니다 : 필요"

console.log('Loading a web page'); 
var page = new WebPage(); 
var url = "http://www.phantomjs.org/"; 
page.open(url, function (status) { 
    //Page is loaded! 
    describe("A suite", function() { 
     it("contains spec with an expectation", function() { 
     expect(true).toBe(true); 
     }); 
    }); 
    phantom.exit(); 
}); 

답변

4

상당히 사용하는 방법이 아닙니다. phantomjs를 제어하는 ​​코드는 jasmine specs로 muddied하지 않아야하며 반대의 경우도 마찬가지입니다.

사양을 .js 파일로 분리하고 spec .js 파일을로드하고 해당 HTML 파일을 phantomjs로 여는 HTML 사양 러너가있는 표준 재스민 설정을 만들어야합니다.

다른 해결책은 자동으로 재스민 스펙을 실행하기 위해 팬텀 (phantomjs)과 재스민 (jasmine)을 사용하는 것입니다.
https://github.com/creynders/grunt-jasmine-task

+0

https://github.com/cowboy/grunt

나는 내 파일을 구분해야합니다. 같은 오류가 발생합니다. html 파일의 내 head 태그 내부 내용은 다음과 같습니다. 여기서 execPage.js에는 순수한 phantomjs 코드가 들어 있으며 jaztest1에는 순수한 재스민 코드가 들어 있습니다. 나는 또한 그루트를 들여다 보았다. 팬텀 js로 Jasmine을 실행하는 것도 또 다른 방법입니다. Jasmine 및 Phantomjs 스크립트를 서로 실행하는 방법을 알아야합니다. 예 : 페이지로 이동하고 jasmine을 실행합니다. – Hohohodown

+0

나는 문제가 더 좋아지고 있다고 생각한다. 시나리오는 다음과 같습니다. tests.js는 재스민 테스트입니다. google.com으로 이동하여 검색 창에 표시되는지 확인하고 싶습니다. google.com에는 재스민이 포함되어 있지 않습니다. 어떻게해야합니까? – Hohohodown

+0

PhantomJS가 아니라 html 페이지에서 jasmine 스크립트를 호출하십시오. 기본적으로 재스민 테스트를 수동으로 실행하고 해당 HTML 페이지의 URL을 PhantomJS로 전달하여 명령 줄에서 실행하려는 경우처럼 정확하게 설정합니다. – Creynders

관련 문제