Что вызывает это исключение?Я пытаюсь использовать Moq
, чтобы издеваться над Microsoft.Office.Interop.Excel.Range
.Я хочу вложить в него еще одну издевательскую Range
.Но когда я пытаюсь получить доступ к вложенному исключению, генерируется исключение.
Исключение
Невозможно применить индексирование с [] к выражению типа 'Castle.Proxies.RangeProxy '
Код
[TestMethod]
public void RangeProxyIndexTest()
{
// creating first range
var cell1 = new Moq.Mock<Range>();
cell1.Setup(c => c.Value2).Returns("1");
var range1Mock = new Moq.Mock<Range>();
range1Mock.SetupGet(r => r[1, Moq.It.IsAny<Object>()]).Returns(cell1.Object);
var range1 = range1Mock.Object;
// creating second range
var cell2 = new Moq.Mock<Range>();
cell2.Setup(c => c.Value2).Returns("2");
var range2Mock = new Moq.Mock<Range>();
range2Mock.SetupGet(r => r[1, Moq.It.IsAny<Object>()]).Returns(cell2.Object);
var range2 = range2Mock.Object;
// merging both ranges into 1
var range3Mock = new Moq.Mock<Range>();
range3Mock.SetupGet(r => r[1, Moq.It.IsAny<Object>()]).Returns(range1);
range3Mock.SetupGet(r => r[2, Moq.It.IsAny<Object>()]).Returns(range2);
var range3 = range3Mock.Object;
// testing succeeds
Assert.AreEqual("1", range1[1].Value2);
Assert.AreSame(range1, range3[1]);
Assert.AreEqual("2", range2[1].Value2);
Assert.AreSame(range2, range3[2]);
// exceptions are thrown here
Assert.AreEqual("1", range3[1][1].Value2);
Assert.AreEqual("2", range3[2][1].Value2);
}