我正在尝试设置对受保护方法的预期调用。方法签名如下所示:
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)))
有没有人知道如何设定预期以使其有效?我不关心任何参数值,我只是想知道该方法被调用至少一次。
答案 0 :(得分:1)
错误消息暗示您需要将virtual
关键字添加到MethodName
方法中,以便Moq可以在测试中覆盖它。