Invoke Static Constructors

Because a static constructor for a type is executed only once, when you fake a static constructor, you need to invoke it in a test that requires a normal execution. While Typemock Isolator does this automatically, you can force a static constructor call.

When to Use

When you want to make sure that the type is reinitialized (for example, when testing a singleton and making sure the instance is null).

Syntax

C#

Isolate.Invoke.StaticConstructor(typeof(<type>));

VB

Isolate.Invoke.StaticConstructor(GetType(<type>))

Samples

C#

[TestMethod, Isolated]
public void CallingStaticConstructorTest()
{
  StaticConstructorExample.TrueOnStaticConstructor = false;
  // force static constructor to be called
  Isolate.Invoke.StaticConstructor(typeof(<StaticConstructorExample>));
  Assert.IsTrue(StaticConstructorExample.TrueOnStaticConstructor);
}

public class StaticConstructorExample
{
  private static bool trueOnStaticConstructor = false;

  public static bool TrueOnStaticConstructor
  {
    get { return trueOnStaticConstructor; }
    set { trueOnStaticConstructor = value; }
  }

  static StaticConstructorExample()
  {
    trueOnStaticConstructor = true;
  }
}

VB

<TestMethod, Isolated>
Public Sub CallingStaticConstructorTest()
    StaticConstructorExample.TrueOnStaticConstructor = False
    'force static constructor to be called
    Isolate.Invoke.StaticConstructor(GetType(StaticConstructorExample))
    Assert.IsTrue(StaticConstructorExample.TrueOnStaticConstructor)
End Sub

Public Class StaticConstructorExample
    Private Shared m_trueOnStaticConstructor As Boolean = False

    Public Shared Property TrueOnStaticConstructor() As Boolean
        Get
            Return m_trueOnStaticConstructor
        End Get
        Set
            m_trueOnStaticConstructor = Value
        End Set
    End Property

    Shared Sub New()
        m_trueOnStaticConstructor = True
    End Sub
End Class