2014-01-09 3 views
2

an issue으로 실행되었습니다. Rhino의 앵커 태그 구현에 기인한다고 생각합니다. env.js을 사용하고 있지만, 아마도 내가 올바르게 구성하고 있지 않은 것 같습니다.앵커 요소의 경로 이름이 Rhino에서 env.js를 사용하여 정의되지 않은 값을 반환합니다

특히, angularjs 응용 프로그램 용으로 작성된 코드에 대한 단위 테스트를 작성하는 동안 문제가 발생합니다. 나는 console.log 통화가 pathname 객체 인 것을 알 수 있기 때문에 오류가 urlParsingNode.pathname-this call의 결과입니다 확신

TypeError: Cannot call method "charAt" of undefined

: 나는 angular.js (제시 버전 1.2.1)를 포함 할 때, 나는 다음과 같은 오류가 발생합니다 정의되지 않았습니다. 우리는 우리가 그들이 생성 된 앵커 태그가 브라우저를 이용할 것이다 희망 this linehref 속성을 설정 볼, 그것은 또한 아래로 document.createElement("a");의 호출의 결과라고 볼 곳

은 내가 urlParsingNode this line의 인스턴스화를 추적 URL을 올바르게 구문 분석합니다.

저는 Rhino를 통해 각도 테스트를하는 JS 단위를 처음 시도하는 것이 아니라고 믿어야합니다. 그러나 지금까지는 해결책을 찾지 못했습니다. 어떤 조언도 크게 감사하겠습니다.

+0

동료의 Angular 1.1.5 프로젝트에서 내 프로젝트 구조를 기반으로하는 Angular 1.2.7과 동일한 오류가 나타납니다. 비록 실수로 내 프로젝트가 다소 다른 오류가 도입되었을 수도 있지만. 누군가가 여기에 답변하기를 희망합니다 ... –

답변

2

발견하여 해결했습니다. pathname 게터/세터는 HTMLAnchorElement에 대해 간단히 정의되지 않았으며 env.js입니다.

나는 a pull request를 제출했으나, 불행하게도 프로젝트는 모두 포기했다. 나는 또한 그것을 하나의 파일로 만드는 방법을 알 수 없었다. 아마도 누군가가 require.js 모듈로 분해하려고했을 것입니다. 내 유스 케이스를 위해 싸울 가치가있는 전투는 아니야.

이 문제를 해결 한 다른 모든 사람들을 위해 아래에 필요한 코드가 있습니다. 그것은 HTMLAnchorElement.prototype에 속합니다. env.js 1.2의 내 사본,이 프로토 타입 라인 8075.에서 시작은 내가 참고로, 내 특정 문제가 this pull request으로 해결

get pathname() { 
    var uri = Envjs.urlsplit(this.href); 
    return uri.path; 
}, 
set pathname(val) { 
    var uri = Envjs.urlsplit(this.href); 
    uri.path = val 
    this.href(uri.urlunsplit(uri)); 
}, 

라인 8118.에서 다음과 같이 말했다.