|
1 | 1 | import { Server } from '../src';
|
| 2 | +import { RemoteCallBack } from '../src/Server'; |
2 | 3 | import { PROMISE_TYPE } from '../src/promiseType';
|
3 | 4 |
|
4 | 5 | describe('remoteAsync:inner test', () => {
|
@@ -61,6 +62,26 @@ describe('remoteAsync:inner test', () => {
|
61 | 62 | const retData = await listener.registerPromise('dataSend', object).catch((d) => Promise.resolve({ v: 1, d }));
|
62 | 63 | expect(retData).toEqual({ v: 1, d: retObject });
|
63 | 64 | });
|
| 65 | + test('listen callback multiple times', async () => { |
| 66 | + const listener = new Server(); |
| 67 | + listener.registerSender((data) => listener.receiveData(data)); |
| 68 | + const cb1 = jest.fn(((data, resolve) => { |
| 69 | + // only first resolve or reject will be accepted when multiple callbacks |
| 70 | + console.log('cb1', data); |
| 71 | + resolve?.({ a: 1 }); |
| 72 | + expect(resolve).not.toEqual(undefined); |
| 73 | + }) as RemoteCallBack); |
| 74 | + const cb2 = jest.fn(((data, resolve ,reject) => { |
| 75 | + // no effect |
| 76 | + reject?.({ a: 1 }); |
| 77 | + expect(reject).not.toEqual(undefined); |
| 78 | + }) as RemoteCallBack); |
| 79 | + listener.listen('k', cb1); |
| 80 | + listener.listen('k', cb2); |
| 81 | + await listener.registerPromise('k', { a: 1 }); |
| 82 | + expect(cb1).toBeCalledTimes(1); |
| 83 | + expect(cb2).toBeCalledTimes(1); |
| 84 | + }) |
64 | 85 | test('off cb', async () => {
|
65 | 86 | const listener = new Server();
|
66 | 87 | const cb1 = () => 'k';
|
|
0 commit comments