|
// api.test.js |
|
const axios = require('axios'); |
|
const fetchData = require('../api'); |
|
|
|
// Mock the axios module |
|
jest.mock('axios'); |
|
|
|
describe('API Call Tests', () => { |
|
|
|
// Reset all mocks before each test to ensure test isolation |
|
beforeEach(() => { |
|
jest.clearAllMocks(); |
|
}); |
|
|
|
it('fetches successfully data from an API', async () => { |
|
const data = { name: 'John Doe' }; |
|
|
|
// Mocking the resolved value of axios.get |
|
axios.get.mockResolvedValue({ data }); |
|
|
|
const result = await fetchData('https://example.com/user'); |
|
expect(result).toEqual(data); |
|
expect(axios.get).toHaveBeenCalledWith('https://example.com/user'); |
|
}); |
|
|
|
it('handles API error correctly', async () => { |
|
const errorMessage = 'Network Error'; |
|
|
|
// Mocking the rejected value of axios.get |
|
axios.get.mockRejectedValue(new Error(errorMessage)); |
|
|
|
await expect(fetchData('https://example.com/user')).rejects.toThrow(errorMessage); |
|
expect(axios.get).toHaveBeenCalledWith('https://example.com/user'); |
|
}); |
|
}); |