私はこの例外で私を夢中にしています。私はTypemock IsolatorとNunitでSharepoint 2010プロジェクトをテストしています。私が嘲笑しようとしているのは、UserProfileManagerのUserProfileコレクションです。テストへユニットテストSharepointオブジェクト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});
}
だから、私の計画は、私は、foreachループを繰り返し処理できるようfakeUserProfileのコレクションを返すようにUserProfileManagerに模擬することです。 fakeUserProfileの内容は本当に重要ではありません。なぜなら、私はこの問題を問題なく模擬できるからです。
ことは、それがこのライン
Isolate.WhenCalled(() => fakeUserProfileManager).WillReturnCollectionValuesOf(new[] {fakeUserProfile, fakeUserProfile, fakeUserProfile});
を実行しようとしたとき、私は素敵な例外ArgumentOutOfRangeExceptionを得ること、です。私は間違っているの?
[docs](http://docs.typemock.com/isolator/##typemock.chm/Documentation/ReplacingCollectionsAAA.html)によると、やり方は正しいようです。たぶんあなたはそれを作成する方法に問題があります。私はアイソレータを一度も使用していないので、私は助けることができないのではないかと思います。タグを固定すると、適切な人々の注目を集める可能性があります。 –