2017-03-29 3 views
1

나는 다음과 같은 자바 스크립트 코드가 있습니다창 객체를 호출하는 자바 스크립트 코드를 테스트하는 방법

if (Notification.permission !== 'granted') { 
    return Notification.permission 
} 

내가 이것을 사용하는 몇 가지 코드에 모카 테스트를 실행, 테스트가 실패 :

ReferenceError: Notification is not defined

I을 이 작업을 수행하여이 작업을 수행 할 수 있다고 생각했습니다.

sinon.stub(Notification, 'permission') 

그러나 여전히 동일한 오류가 발생합니다.

이 오류를 방지하려면 어떻게해야합니까?

답변

0

Notification.permission을 실행하기 전에 Notification이 있는지 먼저 테스트해야합니다. 이 작업을 수행하는

한 가지 방법은 이것으로 ...

if (Notification.permission !== 'granted') { 
    return Notification.permission 
} 

을 대체하는 것입니다 :

if (typeof Notification !== typeof undefined && Notification.permission !== 'granted') { 
    return Notification.permission 
} 
+0

이 작동하지만 테스트 파일에서이 작업을 수행 할 수있는 방법이 없습니다 그 자체? 이러한 객체가 수십 개있는 파일을 가지고 있다면이 수표 중 100 개가 포함 된 실제 작업 코드를 실제로 muddy해야합니까? 나는 Notification.permission이 호출 될 때마다 테스트 파일 자체가 그 메소드를 무시하거나 무시할 수있는 방법이 있기를 바랬다. 나는 모의가 이것에 의미가 있다고 생각했지만 어쩌면 오해입니다. – Riina

+0

@Riina : 'typeof window.Notification === typeof undefined? window.Notification = {} : false;'는 빈'Notification 객체 '를 생성하기 위해 테스트 파일에서 사용됩니다. 그뿐만 아니라 오류를 방지해야하지만 그것은 다소 더러운 속임수 및 일종의 오류 IMO 테스트 목적을 패배 ... –

+0

임시 정지 간격으로 감사이 도움이 ... – Riina

관련 문제