我想嘲笑Microsoft.Office.Interop.Excel.Range,之後可以獲取屬性Row(第一行範圍的索引) 。起訂量v 4.1.1309.1617/nunit.framework v 2.6.3.13283 在我的單元測試,我試圖建立模擬的行爲如下:設置屬性Row to Mocked Microsoft.Office.Interop.Excel.Range with Mock
var moqRowSelected = new Mock<Range>();
const int row = 1;
moqRowSelected.SetupGet(x => x.Row).Returns(row);
moqSheetBase.SetupProperty(x => x.RowSelected, moqRowSelected.Object);
在代碼是單元測試中,我使用的範圍如下:
var iRow = PlanningSheet.RowSelected.Row;
Range row = sheet.Rows[iRow];
當測試運行時,會產生以下異常:
Error: Missing method 'instance int32 [My.Example.Implementation.MyClass] Microsoft.Office.Interop.Excel.Range::get_Row()' from class 'Castle.Proxies.RangeProxy'.
我如何能實現這個成功的嘲諷?任何人都可以幫助我,謝謝。
對於僅在C#和.NET的_older_版本中使用表達式樹的索引器,這不是限制嗎?我已經使用了諸如'someMock.Setup(x => x [row])的東西,返回(whatever.Object);'如果我沒有記錯,就成功了。 –
我發現的問題的來源,是我應該嘲笑任何使用Excel屬性或方法,即使它不是在將被測試。例如該方法:如果我使用這條線'newRow.Rows.AutoFit()'在另一種方法中,我應該嘲笑它,即使我不需要它將會被測試的方法。現在,我的問題是與嘲諷'sheet.Names.Add( 「D_」 + deal.Id, 「=」 + newRow.Address);'我怎麼能嘲笑它。 – user3045743
如果它不在被測試的方法中,那麼_even是什麼意思?如果你指的是你的單元測試執行的方法,那麼你將不得不嘲笑一些生活在那裏的對象...... 我覺得你在嘲諷的困難來自於事實,你認爲這是一個嘲笑的對象。例如,在'newRow.Rows.Autofit()'你必須嘲笑方法'自動調整()'用於範圍實例返回訪問屬性'Rows'由變量'newRow'其也是嘲笑引用的對象時目的。總之,對於這條線,你至少需要兩次模擬。 –