Tag: moq

设置属性行与模拟Mocked Microsoft.Office.Interop.Excel.Range

我想嘲笑Microsoft.Office.Interop.Excel.Range和之后可以得到属性Row(第一行范围的索引)。 Moq v 4.1.1309.1617 / nunit.framework v 2.6.3.13283在我的unit testing中,我尝试设置模拟的行为如下: var moqRowSelected = new Mock<Range>(); const int row = 1; moqRowSelected.SetupGet(x => x.Row).Returns(row); moqSheetBase.SetupProperty(x => x.RowSelected, moqRowSelected.Object); 在被unit testing的代码中,我使用Range如下: var iRow = PlanningSheet.RowSelected.Row; Range row = sheet.Rows[iRow]; testing运行时,会产生以下exception: 错误:类“Castle.Proxies.RangeProxy”中缺less方法'实例int32 [My.Example.Implementation.MyClass] Microsoft.Office.Interop.Excel.Range :: get_Row()'。 我怎样才能成功地实现这个嘲笑? 任何人都可以帮助我,谢谢。

unit testingw / Moq的Excel Interop + Type.Missing

我刚刚遇到一个例外,在编写unit testing的时候我无法解释自己。 (简化)我想testing的代码是: public object GetSecondColumn(Microsoft.Office.Interop.Excel.Range theRange) { return theRange.Columns[2, Type.Missing]; } 我试图写这个testing,但我不断收到一个例外: //Arrange var usedRange = new Mock<Range>(); var result = new Mock<Range>(); usedRange .Setup(m => m[It.IsAny<object>(), It.IsAny<object>()]).Returns( (object r, object c) => { return result.Object; }); //Assert GetSecondColumn(usedRange); 方法的调用抛出: System.ArgumentException Message=Missing parameter does not have a default value. Parameter name: parameters StackTrace: at […]

嘲笑Excel中的Comment.Text()在C#与MOQ

目前我正试图从C#中的moq的Excel的评论界面嘲笑Text()方法。 MSDN链接到文本() 我的问题是,我必须调用它没有参数,因为我只是想读取的内容。 当像这样调用Text()时: mockComment.Setup(m => m.Text()).Returns("test comment") ,显示以下错误: expression式树可能不包含使用可选参数的调用或调用 我怎样才能调用文本(),以便莫克可以嘲笑这种方法? 我知道这个问题的链接,但我的问题是,我没有parameter passing。

如何使用Moq来模拟具有两个索引的索引属性

这个问题清楚地显示了你如何用MOQ模拟索引属性: 如何设置索引属性 但是,如果你有两个索引呢? 例如,假设您有一个_Worksheet对象(来自vsto) var mockWorksheet = new Mock<_Worksheet>(); 你想创build一个名为Cells的属性,这样你就可以像这样使用它: var range = worksheet.Cells[1,1]; 注意:范围可以是另一个模拟,可以用下面的代码来模拟:var mockRange = new Mock(); 有什么build议么?