Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers Faking Private Properties or Indexers

Faking Private Properties or Indexers

To fake a private property or indexer, use one of the following specialized Isolate.NonPublic APIs:

Behavior Type

Description

NonPublic.Property

Fakes a private property

NonPublic.Indexer

Fakes a private indexer

Then use one of the following:

Behavior Type

Description

WhenGetCalled

Fakes the property getter (var x = aClass.Password)

WhenSetCalled

Fakes the property setter (myClass.Password = "typemock rocks";)

Syntax
C#

Isolate.NonPublic.Property.WhenGetCalled(fakeDependency, "PrivateProp").WillReturn(<value>);
Isolate.NonPublic.Property.WhenSetCalled(fakeDependency, "PrivateProp").IgnoreCall();

VB

Isolate.NonPublic.Property.WhenGetCalled(fakeDependency, "PrivateProp").WillReturn(<value>)
Isolate.NonPublic.Property.WhenSetCalled(fakeDependency, "PrivateProp").IgnoreCall()

Samples
Sample 1: Faking Values Returned from a Private Property

To set a behavior on a private get or set property, use the same Isolate.NonPublic function (that is NonPublicWillReturn) with get_PropertyName and set_PropertyName as the method name.

To set a behavior on a private indexer, use the same Isolate.NonPublic function (that is NonPublicWillReturn) with get_Item and set_Item as the method name.

You can set static properties by passing a type instead of an instance.

Indexers cannot be static.

C#

var fakeDependency = Isolate.Fake.Instance<Dependency>(Members.CallOriginal);
Isolate.NonPublic.Property.WhenGetCalled(fakeDependency, "PrivateProp").WillReturn(3);

VB

Dim fakeDependency = Isolate.Fake.Instance(Of Dependency)(Members.CallOriginal)
Isolate.NonPublic.Property.WhenGetCalled(fakeDependency, "PrivateProp").WillReturn(3)

Sample 2: Faking a Private Property when the Private Method Has Generic Arguments

The following sample shows how to fake a private property when the private method has generic arguments.

C#

//Syntax
Isolate.NonPublic.WhenCalled(fakeDependency, "PrivateProp").WithGenericArguments(typeof(MyClass)).WillReturn(<value>);

[TestMethod, Isolated]
public void PrivateGenericMethod_Return()
{
  Isolate.NonPublic.WhenCalled<Dependency>("PrivateCallGuardGeneric").WithGenericArguments(typeof(int)).WillReturn(3);
  var result = Dependency.CallsGuardGeneric<int>();
  Assert.AreEqual(3, result);
}

private static T PrivateCallGuardGeneric<T>()
{
  return default(T);
}

VB

'Syntax
Isolate.NonPublic.WhenCalled(fakeDependency, "PrivateProp").WithGenericArguments(GetType(MyClass)).WillReturn(<value>)

<TestMethod, Isolated>
Public Sub PrivateGenericMethod_Return()
    Isolate.NonPublic.WhenCalled(Of Dependency)("PrivateCallGuardGeneric").WithGenericArguments(GetType(Integer)).WillReturn(3)
    Dim result = Dependency.CallGuardGeneric(Of Integer)()
    Assert.AreEqual(3, result)
End Sub

Public Shared Function CallGuardGeneric(Of T)() As T
    Return PrivateCallGuardGeneric(Of T)()
End Function

Private Shared Function PrivateCallGuardGeneric(Of T)() As T
    Return Nothing
End Function