Skip to main content

method MockTracker.prototype.method

Overload 1

#MockTracker.prototype.method<
MockedObject extends object,
MethodName extends FunctionPropertyNames<MockedObject>,
>
(
object: MockedObject,
methodName: MethodName,
): MockedObject[MethodName] extends Function ? Mock<MockedObject[MethodName]> : never

This function is used to create a mock on an existing object method. The following example demonstrates how a mock is created on an existing object method.

test('spies on an object method', (t) => {
  const number = {
    value: 5,
    subtract(a) {
      return this.value - a;
    },
  };

  t.mock.method(number, 'subtract');
  assert.strictEqual(number.subtract.mock.calls.length, 0);
  assert.strictEqual(number.subtract(3), 2);
  assert.strictEqual(number.subtract.mock.calls.length, 1);

  const call = number.subtract.mock.calls[0];

  assert.deepStrictEqual(call.arguments, [3]);
  assert.strictEqual(call.result, 2);
  assert.strictEqual(call.error, undefined);
  assert.strictEqual(call.target, undefined);
  assert.strictEqual(call.this, number);
});

Type Parameters #

#MockedObject extends object

Parameters #

#object: MockedObject

The object whose method is being mocked.

#methodName: MethodName

The identifier of the method on object to mock. If object[methodName] is not a function, an error is thrown.

#options: MockFunctionOptions
optional

Optional configuration options for the mock method.

Return Type #

MockedObject[MethodName] extends Function ? Mock<MockedObject[MethodName]> : never

The mocked method. The mocked method contains a special mock property, which is an instance of MockFunctionContext, and can be used for inspecting and changing the behavior of the mocked method.

Overload 2

#MockTracker.prototype.method<
MockedObject extends object,
MethodName extends FunctionPropertyNames<MockedObject>,
Implementation extends Function,
>
(
object: MockedObject,
methodName: MethodName,
implementation: Implementation,
): MockedObject[MethodName] extends Function ? Mock<MockedObject[MethodName] | Implementation> : never

Type Parameters #

#MockedObject extends object
#Implementation extends Function

Parameters #

#object: MockedObject
#methodName: MethodName
#implementation: Implementation
#options: MockFunctionOptions
optional

Return Type #

Overload 3

#MockTracker.prototype.method<MockedObject extends object>(
object: MockedObject,
methodName: keyof MockedObject,
): Mock<Function>

Type Parameters #

#MockedObject extends object

Parameters #

#object: MockedObject
#methodName: keyof MockedObject

Return Type #

Mock<Function>

Overload 4

#MockTracker.prototype.method<MockedObject extends object>(
object: MockedObject,
methodName: keyof MockedObject,
implementation: Function,
): Mock<Function>

Type Parameters #

#MockedObject extends object

Parameters #

#object: MockedObject
#methodName: keyof MockedObject
#implementation: Function

Return Type #

Mock<Function>

Did you find what you needed?

Privacy policy