forked from jestjs/jest
/
runtime_jest_fn.js
86 lines (72 loc) · 2.72 KB
/
runtime_jest_fn.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
'use strict';
let createRuntime;
describe('Runtime', () => {
beforeEach(() => {
createRuntime = require('createRuntime');
});
describe('jest.fn', () => {
it('creates mock functions', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
const mock = root.jest.fn();
expect(mock._isMockFunction).toBe(true);
mock();
expect(mock).toHaveBeenCalled();
});
it('creates mock functions with mock implementations', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
const mock = root.jest.fn(string => `${string} implementation`);
expect(mock._isMockFunction).toBe(true);
const value = mock('mock');
expect(value).toBe('mock implementation');
expect(mock).toHaveBeenCalled();
});
});
describe('jest.isMockFunction', () => {
it('recognizes a mocked function', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
const mock = root.jest.fn();
expect(root.jest.isMockFunction(() => {})).toBe(false);
expect(root.jest.isMockFunction(mock)).toBe(true);
});
});
describe('jest.clearAllMocks', () => {
it('clears all mocks', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
const mock1 = root.jest.fn();
mock1();
const mock2 = root.jest.fn();
mock2();
expect(mock1).toHaveBeenCalled();
expect(mock2).toHaveBeenCalled();
runtime.clearAllMocks();
expect(mock1).not.toHaveBeenCalled();
expect(mock2).not.toHaveBeenCalled();
});
});
describe('jest.isEnvironmentTornDown()', () => {
it('should be set to false when the environment is not torn down', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
runtime['isTornDown'] = false;
expect(root.jest.isEnvironmentTornDown()).toBe(false);
});
it('should be set to true when the environment is torn down', async () => {
const runtime = await createRuntime(__filename);
const root = runtime.requireModule(runtime.__mockRootPath);
expect(root.jest.isEnvironmentTornDown()).toBe(false);
runtime.teardown();
expect(root.jest.isEnvironmentTornDown()).toBe(true);
});
});
});