2016-12-19 45 views
5

Tôi đang cố gắng thử console.warn/lỗi nhưng tôi không thể. Tôi sử dụng thư viện của bên thứ ba gọi console.warn bên trong nó. Tôi cần phải kiểm tra là nó được gọi là hay không. Trong trường hợp thử nghiệm của tôi, tôi đã cố gắng để stub console.warn nhưng nó đã không giúp đỡ. Sau đó tôi đã cố gắng để thử giao diện điều khiển bằng tay nó đã không làm việc ra một trong hai.Jest. Làm thế nào để giả lập giao diện điều khiển khi nó được sử dụng bởi một thư viện của bên thứ ba?

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

đã không làm việc

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

đã làm việc. Nhưng tôi vẫn thấy console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138 trong thiết bị đầu cuối. Ai giúp tôi với?

Trả lời

16

Bạn phải sử dụng global để truy cập các đối tượng trong bối cảnh toàn cầu

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

hoặc sử dụng jest.spyOn thêm vào trong 19.0.0

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

Bạn có chắc chắn? Vẫn không làm việc. 'global.console = { cảnh báo: jest.fn(), lỗi: jest.fn(), }; testSchema ('/ app/components/Users/UserItem/UserItemContainer.js'); mong đợi (global.console.warn) .toBeCalled(); ' – Errorpro

+0

Tôi sử dụng nó để kiểm tra chức năng ghi nhật ký,' expect (console.warn) .toBeCalled() 'của nó để kiểm tra cuộc gọi. –

+2

Có kẻ hoạt động. Nhưng có một điều là bạn phải yêu cầu lib sau khi bạn khai báo global.console. Tôi đã làm sai. Tôi yêu cầu lib của tôi và sau đó tuyên bố toàn cầu. Cảm ơn bạn. – Errorpro

Các vấn đề liên quan