Mock<T> class can be used only to mock non-sealed class| Property | Value | 
|---|---|
| Rule ID | PosInfoMoq2002 | 
| Title | Mock<T> class can be used only to mock non-sealed class | 
    
| Category | Compilation | 
| Default severity | Error | 
The Mock<T> can mock only interfaces or non-sealed classes.
The Mock<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 = new Mock<Service>();		// The Service can not be mocked, because it is a sealed class.
	service.Setup(s => s.GetData())
		.Returns(10);
}
public class Service
{
	public virtual int GetData() { }
}
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.