Skip to main content

Monitor interactions

A mock records all interactions from the moment it is created. To only verify the interactions within a given scope, use a monitor:

IChocolateDispenser dispenser = IChocolateDispenser.CreateMock();
MockMonitor<Mock.IMockVerifyForIChocolateDispenser> monitor = dispenser.Mock.Monitor();

dispenser.Dispense("Dark", 1); // Not monitored
using (monitor.Run())
{
dispenser.Dispense("Dark", 2); // Monitored
}
dispenser.Dispense("Dark", 3); // Not monitored

// Verifications on the monitor only count the interactions while it was running
monitor.Verify.Dispense("Dark", It.IsAny<int>()).Once();

MockMonitor<T> lives in the Mockolate.Monitor namespace. You can call monitor.Run() multiple times; each run adds to the monitored interactions.

Clear all interactions​

For simpler scenarios, you can clear all recorded interactions of a mock with ClearAllInteractions():

IChocolateDispenser dispenser = IChocolateDispenser.CreateMock();

dispenser.Dispense("Dark", 1);
// Clears all previously recorded interactions
dispenser.Mock.ClearAllInteractions();
dispenser.Dispense("Dark", 2);

dispenser.Mock.Verify.Dispense("Dark", It.IsAny<int>()).Once();

Setups are not affected by ClearAllInteractions().