2
我試圖設置預期的受保護方法調用。該方法的簽名如下:忽略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)))
有沒有人有一個想法,我可以如何設置期望,使其工作?我不在乎任何參數值,我只是想叮that該方法至少被調用過一次。
是的,這個伎倆。我不太確定是否喜歡將所有我需要的方法模擬爲虛擬,但是我會看到它如何與Moq一起使用。 – 2010-12-20 15:30:49
@安妮:是的,我也覺得有點不對勁! – 2010-12-20 15:36:19