* @param {Object} obj * @param {string} name
(obj, name)
| 88 | * @param {string} name |
| 89 | */ |
| 90 | function wrapper(obj, name) { |
| 91 | const original = obj[name]; |
| 92 | const stub = env.sandbox.stub(ContextNode.prototype, name); |
| 93 | const wrapperName = `__wrapper_${name}`; |
| 94 | stub.callsFake(function (...args) { |
| 95 | const obj = this; |
| 96 | const resolvers = obj[wrapperName] ?? (obj[wrapperName] = []); |
| 97 | const result = original.apply(this, args); |
| 98 | const current = resolvers.slice(0); |
| 99 | resolvers.length = 0; |
| 100 | current.forEach((resolver) => resolver(result)); |
| 101 | return result; |
| 102 | }); |
| 103 | return { |
| 104 | spy: stub, |
| 105 | waitFor: (obj) => { |
| 106 | const resolvers = obj[wrapperName] ?? (obj[wrapperName] = []); |
| 107 | return new Promise((resolve) => { |
| 108 | resolvers.push(resolve); |
| 109 | }); |
| 110 | }, |
| 111 | }; |
| 112 | } |
| 113 | |
| 114 | function waitForDiscover(...nodesOrContextNodes) { |
| 115 | const contextNodes = nodesOrContextNodes.map((arg) => |
no test coverage detected