-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
Copy pathdecorator.spec.ts
44 lines (36 loc) · 1.13 KB
/
decorator.spec.ts
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
import { instrument } from './decorator';
import { disableInstrumentations } from '.';
afterAll(disableInstrumentations);
describe('instrumentation/decorator', () => {
const spy = jest.fn(() => Promise.resolve());
it('should instrument async function', async () => {
class MyClass {
@instrument({ name: 'getNumber' })
public async getNumber(): Promise<number> {
await spy();
return Math.random();
}
}
const myClass = new MyClass();
const result = await myClass.getNumber();
expect(result).toBeDefined();
expect(result).toBeNumber();
expect(spy).toHaveBeenCalledTimes(1);
});
it('should instrument multiple async function calls', async () => {
class MyClass {
@instrument({ name: 'getNumber' })
public async getNumber(): Promise<number> {
await spy();
return Math.random();
}
}
const myClass = new MyClass();
await myClass.getNumber();
await myClass.getNumber();
const result = await myClass.getNumber();
expect(result).toBeDefined();
expect(result).toBeNumber();
expect(spy).toHaveBeenCalledTimes(3);
});
});