Karma + Jasmine을 사용하여 테스트로 설정된 AngularJS 앱이 있습니다. 큰 JSON 개체를 가져 와서 앱의 나머지 부분에서 더 많이 사용할 수있는 형식으로 변환하고 변환 된 개체를 반환하는 테스트하려는 함수가 있습니다. 그게 다야.
내 테스트를 위해 모의 JSON 콘텐츠 만있는 별도의 JSON 파일 (* .json)을 스크립트없이 갖고 싶습니다. 테스트를 위해 JSON 파일을로드하고 테스트중인 함수로 개체를 펌핑 할 수 있기를 원합니다.
http://dailyjs.com/2013/05/16/angularjs-5/에 설명 된대로 모의 팩토리 내에 JSON을 포함 할 수 있다는 것을 알고 있지만 JSON이 스크립트 내에 포함되지 않기를 원합니다. 파일.
나는 몇 가지 시도했지만이 분야에서 꽤 멍청하다. 먼저 Karma가 내 JSON 파일을 포함하도록 설정하여 수행 할 작업을 확인합니다.
files = [
...
'mock-data/**/*.json'
...
]
그 결과 :
Chrome 27.0 (Mac) ERROR
Uncaught SyntaxError: Unexpected token :
at /Users/aaron/p4workspace4/depot/sitecatalyst/branches/anomaly_detection/client/anomaly-detection/mock-data/two-metrics-with-anomalies.json:2
그래서 파일을 "포함"하지 않고 제공하도록 변경했습니다.
files = [
...
{ pattern: 'mock-data/**/*.json', included: false }
...
]
이제는 제공 만되었으므로 사양 내에서 $ http를 사용하여 파일을로드하려고합니다.
$http('mock-data/two-metrics-with-anomalies.json')
내가받은 사양을 실행했을 때 :
Error: Unexpected request: GET mock-data/two-metrics-with-anomalies.json
내 이해로는 $ httpBackend에서 모의 응답을 기대합니다. 그래서 ...이 시점에서 Angular 유틸리티를 사용하여 파일을로드하는 방법을 몰랐기 때문에 jQuery를 시도하여 적어도 작동 할 수 있는지 확인했습니다.
$.getJSON('mock-data/two-metrics-with-anomalies.json').done(function(data) {
console.log(data);
}).fail(function(response) {
console.log(response);
});
결과는 다음과 같습니다.
Chrome 27.0 (Mac) LOG: { readyState: 4,
responseText: 'NOT FOUND',
status: 404,
statusText: 'Not Found' }
Charles에서이 요청을 검사하고 다음과 같이 요청합니다.
/mock-data/two-metrics-with-anomalies.json
Karma에서 "포함"하도록 구성한 나머지 파일은 다음과 같이 요청됩니다.
/base/src/app.js
분명히 Karma는 파일을 제공하기 위해 일종의 기본 디렉토리를 설정하고 있습니다. 그래서 킥을 위해 jquery 데이터 요청을 다음과 같이 변경했습니다.
$.getJSON('base/mock-data/two-metrics-with-anomalies.json')...
그리고 작동합니다! 하지만 지금은 더러워 져서 샤워를해야합니다. 다시 깨끗해 지도록 도와주세요.