Sunday, May 19, 2024
102
rated 0 times [  103] [ 1]  / answers: 1 / hits: 88029  / 8 Years ago, mon, december 19, 2016, 12:00:00

I am trying to mock console.warn/error but I can't. I use a third-party-library which calls console.warn inside it. I need to test was it called or wasn't. In my test case I was trying to stub console.warn but it didn't help. After that I was trying to mock console manually it didn't work out either.


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

didn't work


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

did work.


But I still see console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138 in the terminal.


More From » unit-testing

 Answers
24

You have to use global to access objects in the global context



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


or use jest.spyOn added in 19.0.0



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

[#59653] Friday, December 16, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tiffany

Total Points: 46
Total Questions: 97
Total Answers: 84

Location: Comoros
Member since Tue, Mar 14, 2023
1 Year ago
;