忽略Moq中受保护方法的List类型的参数

时间:2010-12-16 06:15:05

标签: unit-testing moq protected

我正在尝试设置对受保护方法的预期调用。方法签名如下所示:

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 个答案:

答案 0 :(得分:1)

错误消息暗示您需要将virtual关键字添加到MethodName方法中,以便Moq可以在测试中覆盖它。