Skip to content

Commit a8cd019

Browse files
committed
adding jest-extended and asyn tests
1 parent ede2178 commit a8cd019

File tree

5 files changed

+81
-1
lines changed

5 files changed

+81
-1
lines changed

jest.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@ module.exports = {
77
tsconfig: './tsconfig.test.json'
88
}],
99
},
10+
setupFilesAfterEnv:[
11+
"./jest.setupFilesAfterEnv.ts"
12+
]
1013
};

jest.setupFilesAfterEnv.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// add all jest-extended matchers
2+
import * as matchers from 'jest-extended';
3+
expect.extend(matchers);
4+
5+
// or just add specific matchers
6+
import { toBeArray, toBeSealed } from 'jest-extended';
7+
expect.extend({ toBeArray, toBeSealed });

package-lock.json

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"devDependencies": {
1212
"@types/jest": "^29.5.12",
1313
"jest": "^29.7.0",
14+
"jest-extended": "^4.0.2",
1415
"ts-jest": "^29.1.2",
1516
"ts-node": "^10.9.2",
1617
"typescript": "^5.4.5"

src/example/tracker.test.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { TryCatchFinallyHooksBuilder } from '../TryCatchFinallyHooks'
2+
import 'jest-extended'
23

34
test("log onTry asScope",()=>{
45
const log = jest.fn()
@@ -119,5 +120,41 @@ test("log try finally asMethodDecorator",()=>{
119120
expect(log).toHaveBeenCalledTimes(2)
120121
expect(log).toHaveBeenCalledWith("onTry", "MyAction")
121122
expect(log).toHaveBeenCalledWith("onFinally", "MyAction")
123+
})
124+
125+
test("async log onTry asScope",async ()=>{
126+
const logTry = jest.fn()
127+
const logFinally = jest.fn()
128+
const track = new TryCatchFinallyHooksBuilder().add<{args:{name: string}}>({
129+
onTry(ctx) {
130+
logTry("onTry",ctx.args.name)
131+
return {
132+
onFinally() {
133+
logFinally("onFinally",ctx.args.name)
134+
},
135+
}
136+
},
137+
})
138+
139+
const delay = (ms:number)=>new Promise(resolve=>setTimeout(resolve,ms))
122140

123-
})
141+
const myFunc = jest.fn(async (a,b)=>{
142+
await delay(500)
143+
return a+b
144+
})
145+
const res = await track.asScope({name:"MyAction"},async ()=>{
146+
return await myFunc(11,22)
147+
})
148+
149+
expect(res).toBe(11+22)
150+
expect(myFunc).toHaveBeenCalledTimes(1)
151+
152+
expect(logTry).toHaveBeenCalledTimes(1)
153+
expect(logTry).toHaveBeenCalledWith("onTry", "MyAction")
154+
expect(logFinally).toHaveBeenCalledTimes(1)
155+
expect(logFinally).toHaveBeenCalledWith("onFinally", "MyAction")
156+
157+
expect(logFinally).toHaveBeenCalledAfter(myFunc);
158+
159+
160+
})

0 commit comments

Comments
 (0)