Simulating Error in Constructor
When to Use
When you want to test a failure that occurs when constructing an object. For example, an OutOfMemoryException.
Syntax
C# Isolate.Swap.NextInstance<Dependency>().ConstructorWillThrow(new OutOfMemoryException());
VB Isolate.Swap.NextInstance(Of Dependency)().ConstructorWillThrow(New OutOfMemoryException())
Samples
The following sample shows how to fake an exception that is thrown when an object is created.
C# [TestMethod, Isolated] public void FutureInstance_VerifyThrowingExceptionOnCreation() { // We want a memory handling exception to be thrown the next time a Dependency is instantiated Isolate.Swap.NextInstance<Dependency>().ConstructorWillThrow(new OutOfMemoryException()); var classUnderTest = new ClassUnderTest(); var result = classUnderTest.Create(); Assert.AreEqual(null, result); } public class ClassUnderTest { public Dependency Create() { try { return new Dependency(0, ""); } catch (Exception) { return null; } } } public class Dependency { public int Age; public string Name; public Dependency(int age, string name) { Age = age; Name = name; } }
VB <TestMethod(), Isolated()>_ Public Sub FutureInstance_VerifyThrowingExceptionOnCreation() ' We want a memory handling exception to be thrown the next time a Dependency is instantiated Isolate.Swap.NextInstance(Of Dependency)().ConstructorWillThrow(New OutOfMemoryException()) Dim result = New ClassUnderTest().Create() Assert.AreEqual(Nothing, result) End Sub Public Class ClassUnderTest Public Function Create() As Dependency Try Return New Dependency(0, "") Catch generatedExceptionName As Exception Return Nothing End Try End Function End Class Public Class Dependency Public Age As Integer Public Name As String Public Sub New(age__1 As Integer, name__2 As String) Age = age__1 Name = name__2 End Sub End Class