2015-01-19 4 views
0

사용 사례 :각도 서비스를 동적으로 무시 하시겠습니까?

저는 Geb/Selenium을 사용하여 시스템 테스트를하고 있습니다. 런타임시 모든 요청/응답을 기록하기 위해 $ http를 꾸미려고합니다.

소스 코드을 건드리지 않고 의 캐치가 있습니다.

당신은 예를 들어, "$ # 데코레이터를 제공하는 사용"답을 돌진하기 전에

,

http://blog.xebia.com/2014/08/08/extending-angularjs-services-with-the-decorate-method/

이 사용 사례에 대한 그 솔루션 생산 코드에 테스트 후크를 추가 수단 ... 그것은 가능하다면 일반적으로 피하고 싶지 않은 나쁜 것입니다.

업데이트 : Geb에서는 브라우저 창에서 Javascript를 실행할 수 있습니다. 그래서 그것의 지옥에 대한 튜토리얼 코드를 $ http를 꾸미기 위해 달렸다. 안타깝게도 앱이로드 된 후 앱을 다시 구성 할 수 없기 때문에 작동하지 않았습니다. 그러나 이것이 작동하더라도, 또 다른 흥미로운 점이 있습니다. 모듈을 사용하기 전에 $ http 을 오버라이드해야합니다.

+0

차라리 인터셉터를 사용하고 싶지만 런타임 전에 구성해야합니다. 당신은 변압기를 남용 할 수 있습니다. 왜냐하면 그것들은 런타임에 추가 될 수 있기 때문입니다. – zeroflagL

+0

re : 모듈을 사용하기 전에 꾸미기 전에 config 블록에 대한 아이디어가 있습니다. 앱 코드가 실행되기 전에 앱 부트 스트랩 중에 실행됩니다. –

답변

0

$ http 서비스를 꾸미는 것이 가장 깨끗한 방법이므로 ng-constants 및 gulp/grunt와 같은 것을 사용하여 생산 코드를 오염시키지 않아도 '테스트'환경 용 장식 코드 만 추가 할 수 있습니다. 당신이 (런타임 테스트 환경에서 일어나는 경우) 런타임에이 변경에 기울어 경우 How do I configure different environments in Angular.js?

하면, 당신은 '금속에 가까운'가서 처리해야 할 수도 있습니다

여기에 관련 Q/A 참조 XMLHttpRequests : Add a "hook" to all AJAX requests on a page

+0

예, 우리는 쓸데없는 것을 사용합니다. 아니요, ng 상수를 사용할 수 없습니다. 그러나 주요 아이디어는 우리를 위해 작동합니다 : 테스트 버전으로 app config 파일 (우리 app의 app.js)을 덮어 쓰는 새로운 grunt 작업을 만듭니다. 유일한 단점은 유지 관리 할 app.js의 두 가지 버전이 있으므로 아직 코드를 터치해야 할 수도 있다는 것입니다. 그러나이 기술을 사용하면 테스트에서 테스트 후크가 최소화됩니다. –

+0

궁금 해서요, 왜 상수를 사용할 수 없습니까? 모든 작업은 응용 프로그램에 삽입 할 수있는 값/상수 (빌드 타임에) 집합을 생성합니까? –

+0

생산 코드를 건드리지 않아야하기 때문에. 그러나 두 가지 버전의 app.js를 유지해야한다는 것을 알고 나면 간단한 테스트 후크를 추가해도 좋지 않습니다. –

관련 문제