Controlling Collections and Indexers
To return fake collections which are enumerable, use Isolate.WhenCalled.WillReturnCollectionValuesOf().
When Isolate.WhenCalled.WillReturnCollectionValuesOf() is used, Typemock Isolator will implicitly replace calls of GetEnumerator to the original collection with calls to GetEnumerator of the test collection.
When to Use
You can control collections and indexers when your test requires that a fake method to return an enumerable collection.
Syntax
C# Isolate.WhenCalled(() => <your_collection>).WillReturnCollectionValuesOf(<items>);
VB
Isolate.WhenCalled(Function() <your_collection>).WillReturnCollectionValuesOf(<items>)
Samples
Typemock
Isolator does not replace collections that are defined in mscorlib.dll.
C# [TestMethod, Isolated] public void SwapCollection_WithFakeData() { var dependency = new Dependency(); Isolate.WhenCalled(() => dependency.GetList()).WillReturnCollectionValuesOf(new int[] { 1, 2, 3 }); var result = new ClassUnderTest().Sum(dependency); Assert.AreEqual(6, result); } public int Sum(Dependency dependency) { int total = 0; foreach (var i in dependency.GetList()) { total += i; } return total; }
VB
<TestMethod, Isolated>
Public Sub SwapCollection_WithFakeData()
Dim dependency = New Dependency()
Isolate.WhenCalled(Function() dependency.GetList()).WillReturnCollectionValuesOf(New Integer() {1, 2, 3})
Dim result = New ClassUnderTest().Sum(dependency)
Assert.AreEqual(6, result)
End Sub
Public Function Sum(dependency As Dependency) As Integer
Dim total As Integer = 0
For Each i As Integer In dependency.GetList()
total += i
Next
Return total
End Function
