const RequestCommand = require('../commands/request'); const requestPromiseNativeMock = require('request-promise-native'); jest.mock('../utils'); describe('Request Command', () => { let result; beforeEach(() => { requestPromiseNativeMock.fail = false; result = []; jest .spyOn(process.stdout, 'write') .mockImplementation(val => result.push(require('strip-ansi')(val.toString('utf8'))) ); }); afterEach(() => jest.restoreAllMocks()); test.each([ ['alias'], ['alias', '--verbose'], ['alias', '--as-json'], ['alias', '--as-json', '--verbose'], ['alias', '--no-format'], ['alias', '--quiet'] ])('with flags: %s %s %s', async (...args) => { await RequestCommand.run(args); expect(result).toMatchSnapshot(); }); it('should throw an error when the request fails', async () => { requestPromiseNativeMock.fail = true; await expect(RequestCommand.run(['anything'])).rejects.toThrow(Error); }); });