summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Hanzel <mhanzel@gitlab.com>2019-08-15 14:04:43 -0400
committerMartin Hanzel <mhanzel@gitlab.com>2019-08-30 14:29:02 -0400
commitbe6f20d54f1dd2de65ce477c644fd5819dedf9e9 (patch)
tree551f78e5924af01085a9f7fbde1515ade592d56c
parent663b7bb4771f3261d7451b6e1d74c778fd0e3589 (diff)
downloadgitlab-ce-mh/jest-fail-unmocked-requests.tar.gz
Fix test false passes on unmocked requestsmh/jest-fail-unmocked-requests
-rw-r--r--spec/frontend/mocks/ce/lib/utils/axios_utils.js3
-rw-r--r--spec/frontend/mocks/mocks_helper_spec.js7
-rw-r--r--spec/frontend/mocks/node/jquery.js4
-rw-r--r--spec/frontend/mocks_spec.js15
4 files changed, 21 insertions, 8 deletions
diff --git a/spec/frontend/mocks/ce/lib/utils/axios_utils.js b/spec/frontend/mocks/ce/lib/utils/axios_utils.js
index b4065626b09..a3783b91f95 100644
--- a/spec/frontend/mocks/ce/lib/utils/axios_utils.js
+++ b/spec/frontend/mocks/ce/lib/utils/axios_utils.js
@@ -6,9 +6,10 @@ axios.isMock = true;
axios.defaults.adapter = config => {
const message =
`Unexpected unmocked request: ${JSON.stringify(config, null, 2)}\n` +
- 'Consider using the `axios-mock-adapter` in tests.';
+ 'Consider using the `axios-mock-adapter` module in tests.';
const error = new Error(message);
error.config = config;
+ global.fail(error);
throw error;
};
diff --git a/spec/frontend/mocks/mocks_helper_spec.js b/spec/frontend/mocks/mocks_helper_spec.js
index b8bb02c2f43..82e88b712c0 100644
--- a/spec/frontend/mocks/mocks_helper_spec.js
+++ b/spec/frontend/mocks/mocks_helper_spec.js
@@ -1,4 +1,4 @@
-/* eslint-disable global-require, promise/catch-or-return */
+/* eslint-disable global-require */
import path from 'path';
@@ -126,9 +126,8 @@ describe('mocks_helper.js', () => {
it('survives jest.isolateModules()', done => {
jest.isolateModules(() => {
const axios2 = require('~/lib/utils/axios_utils').default;
- expect(axios2.get('http://gitlab.com'))
- .rejects.toThrow('Unexpected unmocked request')
- .then(done);
+ expect(axios2.isMock).toBe(true);
+ done();
});
});
diff --git a/spec/frontend/mocks/node/jquery.js b/spec/frontend/mocks/node/jquery.js
index 34a25772f67..5c82f65406e 100644
--- a/spec/frontend/mocks/node/jquery.js
+++ b/spec/frontend/mocks/node/jquery.js
@@ -4,9 +4,11 @@ const $ = jest.requireActual('jquery');
// Fail tests for unmocked requests
$.ajax = () => {
- throw new Error(
+ const err = new Error(
'Unexpected unmocked jQuery.ajax() call! Make sure to mock jQuery.ajax() in tests.',
);
+ global.fail(err);
+ throw err;
};
// jquery is not an ES6 module
diff --git a/spec/frontend/mocks_spec.js b/spec/frontend/mocks_spec.js
index 2d2324120fd..a4a1fdea396 100644
--- a/spec/frontend/mocks_spec.js
+++ b/spec/frontend/mocks_spec.js
@@ -3,11 +3,22 @@ import axios from '~/lib/utils/axios_utils';
describe('Mock auto-injection', () => {
describe('mocks', () => {
- it('~/lib/utils/axios_utils', () =>
- expect(axios.get('http://gitlab.com')).rejects.toThrow('Unexpected unmocked request'));
+ let failMock;
+ beforeEach(() => {
+ failMock = jest.spyOn(global, 'fail').mockImplementation();
+ });
+
+ it('~/lib/utils/axios_utils', done => {
+ expect(axios.get('http://gitlab.com')).rejects.toThrow('Unexpected unmocked request');
+ setImmediate(() => {
+ expect(failMock).toHaveBeenCalledTimes(1);
+ done();
+ });
+ });
it('jQuery.ajax()', () => {
expect($.ajax).toThrow('Unexpected unmocked');
+ expect(failMock).toHaveBeenCalledTimes(1);
});
});
});