좋은 질문입니다. webpack을 사용하면 개별 파일이 다른 함수 호출로 래핑됩니다. 이 doc을 확인하십시오.
이 질문의 가장 중요한 부분은 코드를 테스트 할 수있게하려면 IOC/DI의 필요성을 보여주는 것입니다. 로컬 모듈에 remote
을 정의하는 대신 Analytics
클래스를 내 보낸 다음 remote
을 해당 생성자에 삽입 할 수 있습니다.
// Analytics.js
export default class Analytics{
constructor(remote) {
this.remote = remote
}
click(name) {
if (name) {
this.remote.next(name)
}
}
}
main.js
import Analytics from './Analytics'
const remote = new Subject()
const analytics = new Analytics(remote)
analysis.click('foo')
모든 구성 요소/서비스에 종속성을 주입하는 것은 지루할 수 있습니다. Angular는 이유/방법을 간소화하기 위해 an decent doc입니다. 희망이 도움이됩니다!
// 업데이트
당신이 원격 조롱 그것의 참조가 아닌 속성을 수정 기억하고 싶은 때 window.remote
const remote = new Subject()
window.remote = remote
를 사용하여 테스트에서 글로벌 상수 및 액세스를 정의하는 창을 사용할 수 있습니다 .
// test.js
beforeEach(() => {
// wrong !!!
window.remote = {
next(name) { assert(name) }
}
// right
window.remote.next = name => assert(name)
})
출처
2017-09-18 12:09:16
Zen
나는 webpack을 사용하고 있으며,'remote'는 전역 변수가 아닙니다. – Zen
안녕하세요 @ 대답 감사합니다. 네, 웹팩을 사용하고 있습니다. Jest는 새로운 Subject의 속성 "next"를 알지 못한다고 말하고 있습니다 (관찰 가능에 대해 조금 아는 경우 다음은 Subject 클래스의 고전적인 메서드입니다). Jest에게 "원격"변수에 대해 알릴 수있는 방법에 대해 알고 싶습니다. – Megan