Skip to main content

Cheat sheet

The most common calls at a glance. Follow the links for details.

using Mockolate;
using Mockolate.Verify;

Create​

IChocolateDispenser dispenser = IChocolateDispenser.CreateMock();
IChocolateDispenser strict = IChocolateDispenser.CreateMock(MockBehavior.Default.ThrowingWhenNotSetup());
ChocolateDispenser classMock = ChocolateDispenser.CreateMock(["constructor", "arguments"]);
IChocolateDispenser spy = IChocolateDispenser.CreateMock().Wrapping(realDispenser);
IChocolateDispenser multi = IChocolateDispenser.CreateMock().Implementing<ILemonadeDispenser>();

Set up methods​

Each line is an alternative: a later setup with the same arguments replaces an earlier one, so chain everything that belongs to one setup.

dispenser.Mock.Setup.Dispense("Dark", It.IsAny<int>()).Returns(true);
dispenser.Mock.Setup.Dispense("Dark", It.IsAny<int>()).Returns((type, amount) => amount < 10);
dispenser.Mock.Setup.Dispense("Green", It.IsAny<int>()).Throws<InvalidOperationException>();
dispenser.Mock.Setup.Dispense("Dark", It.IsAny<int>()).Returns(true).Returns(false); // sequence, repeats
dispenser.Mock.Setup.Dispense("Dark", It.IsAny<int>()).Returns(true).Returns(false).Forever(); // then always false
dispenser.Mock.Setup.Dispense("Dark", It.IsAny<int>()).Do((type, amount) => Console.WriteLine(amount));
dispenser.Mock.Setup.DispenseAsync("Dark", It.IsAny<int>()).ReturnsAsync(3); // for Task<int> methods

Set up properties and indexers​

dispenser.Mock.Setup.TotalDispensed.InitializeWith(42); // behaves like a property, starting at 42
dispenser.Mock.Setup.TotalDispensed.Returns(42); // always returns 42
dispenser.Mock.Setup.TotalDispensed.InitializeWith(42).OnSet.Do(newValue => Console.WriteLine(newValue));
dispenser.Mock.Setup["Dark"].InitializeWith(10);
dispenser.Mock.Setup[It.IsAny<string>()].Returns(type => type.Length);

Events​

dispenser.Mock.Raise.ChocolateDispensed("Dark", 3);

Match parameters​

MatcherMatches
"Dark" or It.Is("Dark")an equal value
It.IsAny<int>()any value
It.Satisfies<int>(x => x > 0)values that satisfy the predicate
It.IsOneOf("Dark", "Milk")one of the values
It.IsInRange(1, 10)a value in the range
It.IsNull<string>(), It.IsNotNull<string>()null, anything but null
It.Matches("Da*")a wildcard pattern
It.Contains(5), It.SequenceEquals(1, 2)collections
It.IsOut(() => 42), It.IsRef<int>(v => v + 1)out and ref parameters
Match.AnyParameters()any combination of parameters

Verify​

dispenser.Mock.Verify.Dispense("Dark", It.IsAny<int>()).Once();
dispenser.Mock.Verify.Dispense("Dark", It.IsAny<int>()).Never();
dispenser.Mock.Verify.Dispense("Dark", It.IsAny<int>()).AtLeast(2);
dispenser.Mock.Verify.TotalDispensed.Got().AtLeastOnce();
dispenser.Mock.Verify.TotalDispensed.Set(42).Once();
dispenser.Mock.Verify["Dark"].Got().Twice();
dispenser.Mock.Verify.ChocolateDispensed.Subscribed().Once();
dispenser.Mock.Verify.Dispense("Dark", 1).Then(m => m.Dispense("Milk", 2));
dispenser.Mock.Verify.Dispense("Dark", 1).Within(TimeSpan.FromSeconds(1)).Once();