2016-12-19 1 views
5

Я пытаюсь mock console.warn/error, но я не могу. Я использую стороннюю библиотеку, которая вызывает console.warn внутри нее. Мне нужно было проверить, было ли это вызвано или не было. В моем тестовом примере я пытался заглушить console.warn, но это не помогло. После этого я пытался рушить консоль вручную, это тоже не сработало.Jest. Как имитировать консоль, когда она используется сторонней библиотекой?

console.warn = jest.fn(); 
testSchema('/app/components/Users/UserItem/UserItemContainer.js'); 
expect(console.warn).toBeCalled(); 

не работает

console.warn = jest.fn(); 
testSchema('/app/components/Users/UserItem/UserItemContainer.js'); 
console.warn('error'); 
expect(console.warn).toBeCalled(); 

сделал работу. Но я все еще вижу console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138 в терминале. Может кто-нибудь мне помочь?

ответ

16

Вы должны использовать global для доступа к объектам в глобальном контексте

global.console = {warn: jest.fn()} 
expect(console.warn).toBeCalled() 

или использовать jest.spyOn добавлены в 19.0.0

jest.spyOn(global.console, 'warn') 
+0

Вы уверены? Все еще не работает. 'global.console = { warn: jest.fn(), error: jest.fn(), }; testSchema ('/ app/components/Users/UserItem/UserItemContainer.js'); expect (global.console.warn) .toBeCalled(); ' – Errorpro

+0

Я использую его для проверки функций ведения журнала, его' expect (console.warn) .toBeCalled() 'для проверки вызова. –

+2

Да, ребята, это работает. Но одно дело в том, что вам нужно потребовать lib после объявления global.console. Я сделал это неправильно. Мне потребовался мой lib и после этого объявленный глобальный. Спасибо. – Errorpro

Смежные вопросы