Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Moq与Word互操作集合一起使用_C#_Moq_Office Interop - Fatal编程技术网

C# 将Moq与Word互操作集合一起使用

C# 将Moq与Word互操作集合一起使用,c#,moq,office-interop,C#,Moq,Office Interop,我有一个类,它接受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 mock

我有一个类,它接受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;
在那条线上。我认为嘲弄的全部意义在于你定义了数组的边界,但显然有些东西不适合我


我当然愿意接受这样一种可能性,即我的做法是完全错误的,但我需要能够定义一个包含多个具有不同名称的书签对象的范围,因为这就是我正在测试的对象。

您是否尝试过返回lambda。返回index=>bm1,它甚至不生成。我试过了。Returns=>vm1,这将构建,但没有什么区别。我不认为返回是导致错误的原因。
Failure: Setup: System.IndexOutOfRangeException: Index was outside the bounds of the array