devlooped/moq · error · ArgumentNullException
value (Argument is null)
Error message
value (Argument is null)
What it means
Moq throws this ArgumentNullException when null is assigned to Mock<T>.DefaultValueProvider. A mock must always have a default value provider to produce return values for loose invocations, so null is rejected immediately.
Solutions
- Assign a concrete provider such as DefaultValue.Empty, DefaultValue.Mock, or a custom DefaultValueProvider subclass.
- If you intended to reset behavior, create a new mock rather than setting the provider to null.
- Null-check the value returned by your provider factory before assigning it.
Example fix
// before mock.DefaultValueProvider = GetProvider(); // may be null // after var provider = GetProvider(); mock.DefaultValueProvider = provider ?? DefaultValue.Empty;
Defensive patterns
Strategy: type-guard
Validate before calling
var provider = GetProvider(); if (provider is null) provider = DefaultValue.Empty; mock.DefaultValueProvider = provider;
Type guard
bool IsValidProvider(DefaultValueProvider p) => p is not null;
Try / catch
try { mock.DefaultValueProvider = provider; } catch (ArgumentNullException) { mock.DefaultValueProvider = DefaultValue.Empty; } Prevention
- Never assign null to DefaultValueProvider; use DefaultValue.Empty to reset
- Null-check provider factories before assignment
When it happens
Trigger: mock.DefaultValueProvider = null; or passing a null provider variable/return value of a factory into the DefaultValueProvider setter (src/Moq/Mock`1.cs:264).
Common situations: A provider-factory method returning null on a missed configuration branch; conditional config code that nulls out the provider to 'reset' it instead of assigning Mock.Of<DefaultValueProvider> or a concrete provider.
Related errors
- Value cannot be null. (Parameter 'value')
- Value cannot be null. (Parameter 'value')
- Value cannot be null. (Parameter 'newExpression')
- callback (Argument is null)
- condition (Argument is null)
AI-assisted analysis of devlooped/moq@89a5be629c (2026-09-16).
Data as JSON: /api/errors/ba77634f97122297.
Report an issue: GitHub.
Appendix: source
Thrown at src/Moq/Mock`1.cs:264
throw new NotSupportedException(Resources.CallBaseCannotBeUsedWithDelegateMocks);
}
this.callBase = value;
}
}
internal override object?[] ConstructorArguments => this.constructorArguments;
internal override Dictionary<Type, object?> ConfiguredDefaultValues => this.configuredDefaultValues;
/// <summary>
/// Gets or sets the <see cref="DefaultValueProvider"/> instance that will be used
/// e. g. to produce default return values for unexpected invocations.
/// </summary>
public override DefaultValueProvider DefaultValueProvider
{
get => this.defaultValueProvider;
set => this.defaultValueProvider = value ?? throw new ArgumentNullException(nameof(value));
}
internal override EventHandlerCollection EventHandlers => this.eventHandlers;
internal override List<Type> AdditionalInterfaces => this.additionalInterfaces;
internal override InvocationCollection MutableInvocations => this.invocations;
internal override bool IsObjectInitialized => this.instance != null;
/// <summary>
/// Exposes the mocked object instance.
/// </summary>
public virtual new T Object
{
get { return (T)base.Object; }
}
View on GitHub (pinned to 89a5be629c)