使用Moq与Word Interop集合

时间:2014-04-17 22:51:20

标签: c# moq office-interop

我有一个类,它接受一个I​​nterop.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,因为这就是我的意思。测试

0 个答案:

没有答案