我有一个类,它接受一个Interop.Word.Range对象并从中创建一个列表。我正在尝试创建一个专门测试该范围内书签的测试。因此,我试图嘲笑这个。
// this works
var mockBookmark = new Mock<Word::Bookmark>();
mockBookmark.Setup(b => b.Name).Returns("A Bookmark");
var bm1 = mockBookmark.Object;
// this works
var mockRange = new Mock<Word::Range>();
mockRange.Setup(f => f.Text).Returns("This is the text");
mockRange.Setup(f => f.Bookmarks).Returns(bookmarks);
var range = mockRange.Object;
// this doesn't
var mockBookmarks = new Mock<Word::Bookmarks>();
mockBookmarks.SetupGet(b => b[It.IsAny<string>()]).Returns(bm1);
var bookmarks = mockBookmarks.Object;
但无论我放入什么b [It.IsAny()](我尝试过整数,字符串和通配符),我都会打电话给
Failure: Setup: System.IndexOutOfRangeException: Index was outside the bounds of the array
就在那条线上。我认为嘲笑的全部意义在于你定义了数组的界限,但显然有些东西不是为了点击我。
我当然愿意接受这种完全错误的方式,但是我需要能够定义一个包含多个具有不同名称的Bookmark对象的Range,因为这就是我的意思。测试