Имея следующий тест блока:Подделка вызова массива для конкретного индекса вызывает исключение
public interface ITestMe
{
object[] Values { get; }
}
[Test]
public void Test()
{
var sut = A.Fake<ITestMe>();
A.CallTo (() => sut.Values[0]).Returns (4);
Assert.That (sut.Values[0], Is.EqualTo (4));
}
результатов в следующем за исключение:
System.InvalidCastException : Unable to cast object of type 'System.Linq.Expressions.SimpleBinaryExpression' to type 'System.Linq.Expressions.InvocationExpression'.
at FakeItEasy.Expressions.CallExpressionParser.Parse(LambdaExpression callExpression)
at FakeItEasy.Configuration.FakeConfigurationManager.AssertThatMemberCanBeIntercepted(LambdaExpression callSpecification)
at FakeItEasy.Configuration.FakeConfigurationManager.CallTo(Expression1 callSpecification) at FakeItEasy.A.CallTo(Expression1 callSpecification)
Или, может быть, я не знаю, как указать подделку для индексатора?
Почему бы не просто подделать массив? 'A.CallTo (() => sut.Values). Возвраты (новый объект [] {4})'. –
@CharlesMager: см. Мой комментарий под ответом Блэра. –