2010-12-16 2 views
2

Я пытаюсь настроить ожидаемый вызов защищенного метода. Методы подпись выглядит следующим образом:Игнорирование аргумента типа 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))) 

Есть ли у кого-нибудь идеи, как я могу настроить ожидание так, чтобы оно работало? Мне не нужны значения аргументов, я просто хочу, чтобы метод вызывался хотя бы один раз.

ответ

1

Сообщение об ошибке означает, что вам нужно добавить ключевое слово virtual в ваш метод MethodName, чтобы Moq мог переопределить его в тестах.

+0

Да, это сделал трюк. Я не уверен, что мне нравится делать все методы, которые мне нужны, чтобы высмеивать как виртуальные, но я посмотрю, как это происходит с Moq. – 2010-12-20 15:30:49