- Getting started
- Creating a substitute
- Setting a return value
- Return for specific args
- Return for any args
- Return from a function
- Multiple return values
- Replacing return values
- Checking received calls
- Clearing received calls
- Argument matchers
- Callbacks, void calls and When..Do
- Throwing exceptions
- Safe configuration and overlapping calls
- Raising events
- Auto and recursive mocks
- Setting out and ref args
- Actions with argument matchers
- Checking call order
- Partial subs and test spies
- Return for all calls of a type
- Threading
- Compatibility argument matchers
- NSubstitute.Analyzers
- How NSubstitute works
- Search
Setting a return value
The following examples relate to substituting for the following interface:
public interface ICalculator {
int Add(int a, int b);
string Mode { get; set; }
}
For methods
To set a return value for a method call on a substitute, call the method as normal, then follow it with a call to NSubstitute’s Returns()
extension method.
var calculator = Substitute.For<ICalculator>();
calculator.Add(1, 2).Returns(3);
This value will be returned every time this call is made. Returns()
will only apply to this combination of arguments, so other calls to this method will return a default value instead.
//Make a call return 3:
calculator.Add(1, 2).Returns(3);
Assert.AreEqual(calculator.Add(1, 2), 3);
Assert.AreEqual(calculator.Add(1, 2), 3);
//Call with different arguments does not return 3
Assert.AreNotEqual(calculator.Add(3, 6), 3);
For properties
The return value for a property can be set in the same way as for a method, using Returns()
. You can also just use plain old property setters for read/write properties; they’ll behave just the way you expect them to.
calculator.Mode.Returns("DEC");
Assert.AreEqual(calculator.Mode, "DEC");
calculator.Mode = "HEX";
Assert.AreEqual(calculator.Mode, "HEX");
More ways of setting return values
This covers the very basics of setting a return value, but NSubstitute can do much more. Read on for other approachs, including matching specific arguments, ignoring arguments, using functions to calculate return values and returning multiple results.
Edit this page