63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
const MockSubprocess = {
|
|
execute: function (command)
|
|
{
|
|
const invocation = {command};
|
|
invocation.promise = new Promise((resolve, reject) => {
|
|
invocation.resolve = resolve;
|
|
invocation.reject = reject;
|
|
});
|
|
|
|
if (this._waitingInvocation) {
|
|
this._waitingInvocationResolver();
|
|
this._waitingInvocation = null;
|
|
this._waitingInvocationResolver = null;
|
|
}
|
|
|
|
this.invocations.push(invocation);
|
|
return invocation.promise;
|
|
},
|
|
resetAndWaitForInvocation: function ()
|
|
{
|
|
this.reset();
|
|
return this.waitForInvocation();
|
|
},
|
|
waitForInvocation: function ()
|
|
{
|
|
if (!this._waitingInvocation) {
|
|
this._waitingInvocation = new Promise(function (resolve, reject) {
|
|
MockSubprocess._waitingInvocationResolver = resolve;
|
|
});
|
|
}
|
|
return this._waitingInvocation;
|
|
},
|
|
inject: function ()
|
|
{
|
|
const originalSubprocess = global.Subprocess;
|
|
|
|
beforeEach(function () {
|
|
MockSubprocess.reset();
|
|
originalSubprocess = global.Subprocess;
|
|
global.Subprocess = MockSubprocess;
|
|
});
|
|
|
|
afterEach(function () {
|
|
global.Subprocess = originalSubprocess;
|
|
});
|
|
|
|
return MockSubprocess.invocations ;
|
|
},
|
|
reset: function ()
|
|
{
|
|
MockSubprocess.invocations.length = 0;
|
|
MockSubprocess._waitingInvocation = null;
|
|
MockSubprocess._waitingInvocationResolver = null;
|
|
},
|
|
|
|
_waitingInvocation: null,
|
|
_waitingInvocationResolver: null,
|
|
invocations: [],
|
|
};
|
|
|
|
if (typeof module != 'undefined')
|
|
module.exports.MockSubprocess = MockSubprocess;
|