Я схожу с ума здесь с этим исключением, которое я получаю. Я занимаюсь тестированием проекта Sharepoint 2010 с Typemock Isolator и Nunit. То, что я пытаюсь смутить, это коллекция UserProfile для UserProfileManager.
Код для проверки:
public void IterateUsers()
{
SPServiceContext context = SPServiceContext.GetContext(site);
if (profileManager == null)
{
profileManager = new UserProfileManager(context);
}
foreach (UserProfile profile in profileManager)
{
DoThingsThatAreNotRelevant();
}
}
}
И мой тестовый код:
[Test]
public void IterateUsersTest()
{
//SPSite
var fakeSite = Isolate.Fake.Instance<SPSite>(Members.ReturnRecursiveFakes);
Isolate.Swap.NextInstance<SPSite>().With(fakeSite);
//SPServiceContext
var fakeSPServiceContext = Isolate.Fake.Instance<SPServiceContext> (Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => SPServiceContext.GetContext(fakeSite)).WillReturn(fakeSPServiceContext);
//UserProfileManager
var fakeUserProfileManager = Isolate.Fake.Instance<UserProfileManager>(Members.ReturnRecursiveFakes);
Isolate.Swap.NextInstance<UserProfileManager>().With(fakeUserProfileManager);
//UserProfile
var fakeUserProfile = Isolate.Fake.Instance<UserProfile>(Members.ReturnRecursiveFakes);
Isolate.Swap.NextInstance<UserProfile>().With(fakeUserProfile);
Isolate.WhenCalled(() => fakeUserProfileManager).WillReturnCollectionValuesOf(new[] {fakeUserProfile, fakeUserProfile, fakeUserProfile});
}
Итак, я планирую сделать так, чтобы UserProfileManager возвращал коллекцию fakeUserProfile, чтобы я мог выполнять итерацию по циклу foreach. Содержание fakeUserProfile не очень важно, так как я могу без проблем издеваться над поведением.
Дело в том, что когда он пытается выполнить эту строку
Isolate.WhenCalled(() => fakeUserProfileManager).WillReturnCollectionValuesOf(new[] {fakeUserProfile, fakeUserProfile, fakeUserProfile});
Я получаю приятное ArgumentOutOfRangeException. Что я делаю не так?