2013-05-08 5 views
2

SocketStream/node.js 서버에서 제공하는 AngularJS 응용 프로그램에서 작업하고 있습니다. SocketStream 서버에서 API 함수를 호출하는 AngularJS 서비스가 있으며 진행 상황이 좋았습니다.카르마를 사용하여 AngularJS/SocketStream/Node.js 응용 프로그램을 테스트하는 방법

하지만 이제는 첫 번째 테스트를 작성하는 데 시간이 다가 왔고, 처음에 테스트 할 프레임 워크는 Karma/Jasmine입니다. 이것이 AngularJS의 권장 설정이므로.

는 는 ,하지만 내 AngularJS와 모듈을 사용하여 가져 오기 때문에 (SocketStream의 버전, 하지 require.js)와 서버 API 호출을 '필요'시험의 일부, 나는 SocketStream을 (로드 카르마를 구성하는 지금까지 너무 좋아해야 할

적어도 클라이언트 쪽).

나는 'https://github.com/yiwang/angular-phonecat-livescript-socketstream'을 잘 보았지만이 예제를 실행하면 런타임 오류가 발생합니다. 이후 버전의 다양한 종속성이 설치되었을 가능성이 있습니다.

app.js에 'ss.client.packAssets()'를 추가하고 'SS_PACK = 1 노드 app.js'를 실행하여 SocketStream 앱을 패키지화하여 '필수'를 해결할 수있었습니다. 그러나 카르마를 시작할 때

'Chrome 23.0 (Linux) ERROR 
    Uncaught TypeError: undefined is not a function 
    at /the...path/client/static/assets/app/1368026081351.js:25' 

'1368026081351.js'는 SocketStream 패키지 자산 파일입니다. 로드하지 않으면 오류 메시지가 'require undefined'와 유사하므로 내 생각에 SocketStream의 코드 어딘가에 오류가 발생하고 있습니다. 또한 나는 DEBUG 모드에서 카르마를 실행하고 제공되는 모든 파일을 볼 수 있기 때문에 또한.

저는 지금 일어나고있는 일이 무엇인지 알기 위해 다른 접근법을 시도해 왔습니다. 그래서 내 질문은 :

누군가가 카르마를 사용하여 AngularJS/SocketStream을 성공적으로 테스트하고 있습니까? 누구나 내가 어떻게 고칠 수 있는지, 아니면 적어도이 문제를 디버깅 할 수있는 제안이 있습니까? 다른 대안/더 나은 솔루션이 있습니까? 내가 카르마와 Node.js를/SocketStream 오버랩을 많이 가지고 결론에 도달하기 때문에,의

정렬, 그래서 나는 내가 할 수 있는지 확인하기로 결정

답변

3

시간, 종류의, 내 자신의 질문에 대답 Karma를 생략하고 SocketStream을 통해 재스민 테스트 플랫폼을 제공하십시오. 그것은 그것이 가능하다는 것을 밝혀 여기에 어떻게 내가 해냈어 :

내가 내 'app.js'파일에 새로운 SocketStream 경로와 클라이언트를 정의 :
ss.client.define('test', { 
    view: 'SpecRunner.html', 
    css: ['libs/test'], 
    code: ['libs', 'tests', 'app'], 
    tmpl: 'none' 
}); 

ss.http.route('/test', function(req, res) { 
    res.serveClient('test'); 
}); 

내가 자스민 - 독립 - 1.3 다운로드. 1.zip을 실행하고 'SpecRunner.html'을 'client/views'폴더에 복사합니다.
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular-resource.min.js"></script> 
<SocketStream/> 

내가 샘플 소스 파일 ('Player.js'와 '노래를 가져'스크립트 '태그를 제거 : 그때는 모든 다른 뷰처럼, AngularJS와 모든 SocketStream 클라이언트 파일을로드 할을 편집했다. js ')와 스펙을 제공하지만 마지막'script '블록을 수정하지 않고 그대로 둡니다.

그런 다음 'client/css/libs'라는 새 폴더를 'test'라는 이름으로 만들고 'jasmine.css'를 수정하지 않고 복사했습니다.

그런 다음 '01 -jasmine.js '및 '02 -jasmine-html.js'로 이름이 변경되었지만 '/jasmine-html.js'는 '/jasmine-html.js' libs '.

이제 재스민이 설치되고 '/ test'경로를 사용하여 호출됩니다. 약간 불만족스러운 점은 스펙 파일을 저장할 우아한 곳을 찾지 못했다는 점이다. 그들은 'libs'폴더 안에 넣으면 지금까지만 작동합니다. 다른 곳에서는 SocketStream에서 모듈로 제공되며 실행되지 않습니다.

하지만 지금은 그걸로 살 수 있습니다. 특별한 카르마 설정을 구성 할 필요없이 재스민 테스트를 실행할 수 있습니다.