내 JavaScript 단위 테스트 (내 아이디어가 아닌 기존 프로젝트 인 QUnit로 작성)에 대한 적용 테스트를 실행하고 명령 줄을 통해 실행하려고합니다. 문제 나는 직면하고있다 외부 코드 비트에 대한 참조입니다. 예를 울부 짖는 소리에 봐 :단위 테스트 용 외부 .js 파일 포함
코드 :
var DateHelper = function() {
return {
GetUtcDate: function (date) {
if (DateTypeChecker.Data["date"]) {
return new Date();
}
return date;
}
}
테스트 : 브라우저에서 실행 그래서 두 날짜를 확인하는 아주 간단한 테스트, 이것은 외부 때문에 사랑스러운 작동
QUnit.test('GetUtcNow - compare UTC date', function(assert) {
var currentUtcDate = DateHelper.GetUtcNow();
var nowDate = new Date();
assert.equal(nowDate.getUTCFullYear() == currentUtcDate.getFullYear(), 'dates are the same');
});
DateTypeChecker
을 포함한 javascript 파일이 HEAD에로드됩니다. 그러나이 테스트는
node
(또는 w/e가 테스트를 수행 중입니다)와 같이 명령 줄에서 실패하여
DateTypeChecker
개체에 대한 참조가 없습니다.
제 질문은 DateTypeChecker
에 대한 파일이로드되거나 필요하도록 어떻게 수정해야합니까? (나는 RequireJS로이 일을 할 수 있지만, 더 의존성과 프레임 워크를 추가 할 필요가 없다는 것을 알고있다.)
나는 이것이 js
유닛 테스트 (QUnit뿐만 아니라)에 대한 일반적인 질문이라고 생각한다.
우수한 대답, 내가 옵션을 고려하지 않은) 모두에서, 외부 객체 리터럴 중 일부는 매우 큰만큼, 나는 그것을 시도 할 것이다 :) 답변 b) 나는 이미 RequireJS와 비슷한 방법으로 고려했지만, 프로젝트의 라이브 서버에 대해서도 신경을 써야했다. – Aca85
** 대답 a) worked ** 그러나 나는 window 객체가 전혀 참조 될 필요가 없으므로 답을 편집 할 것을 권합니다. 건배. – Aca85
나는 그것이 기뻤다! 'window' 객체에 관해서는 JavaScript에서 함수 밖에서 아무것도 정의하지 않으면 브라우저가 전역 범위에 배치됩니다. 즉, 'window'입니다. "실제"DateTypeChecker *는 다른 파일에서 사용하기 위해서는'window' 객체에 있어야합니다. 사실, 여기에 window를 사용하지 않고'var DateTypeChecker = {...} '를 사용하려고하면 변수는'beforeEach' 함수 내에서만 정의되기 때문에 ** 작동하지 않습니다 **. 나는 이것을 window.DateTypeChecker **로 유지하는 것이 좋습니다. – jakerella