Я пытаюсь настроить ожидаемый вызов защищенного метода. Методы подпись выглядит следующим образом:Игнорирование аргумента типа List для защищенного метода в Moq
protected SqlDataReader MethodName(string Name, List<SqlParameter> paramList, SqlConnection con)
Я пришел, насколько настройки ожидания следующим образом, но я получаю сообщение об ошибке при выполнении теста:
mock.Protected()
.Setup<SqlDataReader>("MethodName", "SomeString", ItExpr.IsAny<List<SqlParameter>>(), ItExpr.IsNull<SqlConnection>())
.Returns(dataReader);
ошибки я получаю :
Test method GlobalTests.DBAdapterSystemDataTest.GetDentalWingsProstheticTypeMappings threw exception:
System.NotSupportedException: Invalid setup on a non-virtual (overridable in VB) member: mock => mock.ExecuteReaderStoredProcedure("GetDentalWingsProstheticTypeMappings", It.IsAny<List`1>(), It.Is<SqlConnection>(v => Object.Equals((Object)v, (Object)null)))
Есть ли у кого-нибудь идеи, как я могу настроить ожидание так, чтобы оно работало? Мне не нужны значения аргументов, я просто хочу, чтобы метод вызывался хотя бы один раз.
Да, это сделал трюк. Я не уверен, что мне нравится делать все методы, которые мне нужны, чтобы высмеивать как виртуальные, но я посмотрю, как это происходит с Moq. – 2010-12-20 15:30:49