Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects Faking Private Objects

Faking Private Objects

Using the Mocking API, you can create fake objects of interfaces as well as concrete and sealed classes.

When to Use

When you want to pass a fake object with not visible type to the method under test.

Syntax

C#

Isolate.Fake.Instance(type);

VB

Isolate.Fake.Instance(type)

Resulting Fake in the test will have type 'object'. For setting behavior on it use Isolate.NonPublic API or by casting to visible base class if this is permissible.

Samples

C#

[TestMethod]
public void FakingInstanceOfNotVisibleType()
{
    //Arrange
    var internalType = typeof(VisibleType).Assembly.GetType("ThirdPartyProject.NotVisibleTypeToFake");
    var dependency = Isolate.NonPublic.Fake.Instance(internalType);
    var instance = new VisibleType();

    //Act
    var result = (double)Isolate.Invoke.Method(instance, "Calculate", 0.1, 0.2, dependency);

    //Assert
    Assert.AreEqual(0.3, result, 0.1);
}

public class VisibleType
{
    private double Calculate(double a, double b, NotVisibleTypeToFake dependency)
    {
        dependency.Check();
        return a + b;
    }
}

internal class NotVisibleTypeToFake
{
  public void Check()
  {
    throw new Exception("No Entry");
  }
}

VB

<TestMethod(), Isolated()> _
Public Sub FakingInstanceOfNotVisibleType()
  
  'Arrange
  Dim internalType = GetType(VisibleType).Assembly.GetType("ThirdPartyProject.NotVisibleTypeToFake")
  Dim dependency = Isolate.NonPublic.Fake.AllInstances(internalType)
  Dim instance = New VisibleType()
  'Act
  Dim result = CType(Isolate.Invoke.Method(instance, "Calculate", 0.1, 0.2, dependency), Double)
  
  'Assert
  Assert.AreEqual(0.3, result, 0.1)
End Sub

Public Class VisibleType
    Private Function Calculate(a As Double, b As Double, dependency As NotVisibleTypeToFake) As Double
        dependency.Check()
        Return a + b
    End Function
End Class

Friend Class NotVisibleTypeToFake
  Public Sub Check()
    Throw New Exception("No Entry")
  End Sub
End Class