-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpromisify.test.js
46 lines (41 loc) · 1.2 KB
/
promisify.test.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
const util = require("util");
const promisify = function (fn) {
return function (...args) {
return new Promise((resolve, reject) => {
fn(...args, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
};
};
describe("promisfy unit test", () => {
it("Return a promise that resolves with a result of the original function", async () => {
function originalFn(callback) {
callback(null, "success");
}
// const promisifiedFn = util.promisify(originalFn);
const promisifiedFn = promisify(originalFn);
const result = await promisifiedFn();
expect(result).toEqual("success");
});
it("Return a promise that rejects with an error if the original function throws an error ", async () => {
function originalFn(callback) {
callback(new Error("error"));
}
// const promisifiedFn = util.promisify(originalFn);
const promisifiedFn = promisify(originalFn);
let result, error;
try {
result = await promisifiedFn();
} catch (err) {
error = err;
} finally {
expect(result).toEqual(undefined);
expect(error.message).toEqual("error");
}
});
});