Mock.Of<T> method must be used only to mock non-sealed class| Property | Value |
|---|---|
| Rule ID | PosInfoMoq2009 |
| Title | Mock.Of<T> method must be used only to mock non-sealed class |
| Category | Compilation |
| Default severity | Error |
The Mock.Of<T> method must be used only to mock non-sealed class.
The Mock.Of<T> method must be use only on the interfaces or non-sealed classes.
For example, the following code can not mock the Service class because it is sealed.
[Fact]
public void Test()
{
var service = Mock.Of<Service>(s => s.Property == 1234); // The Service can not be mocked, because it is a sealed class.
}
public class Service
{
public virtual int Property { get; }
}
To fix a violation of this rule, be sure to mock interfaces or non-sealed classes.
Do not suppress an error from this rule. If bypassed, the execution of the unit test will be failed with a MoqException
thrown with the “Type to mock (xxx) must be an interface, a delegate, or a non-selead, non-static class” message.