У меня есть этот абстрактный класс, который я хочу проверить.Я хочу убедиться, что при вызове SomeMethod
вызывается ValidateStronglyTypedData
.
public abstract class SomeAbstractClass<TDataType> where TDataType : class
{
public ResultType SomeMethod(string someParam)
{
TDataType tDataType = convert(someParam);
this.ValidateStronglyTypedData(tDataType);
}
protected abstract ResultType ValidateStronglyTypedData(TDataType stronglyTypedData);
}
У меня есть это:
// Arrange
var mockSomeAbstractClass = new Mock<SomeAbstractClass<TestJsonDataType>>();
var testData = "{ 'testProperty': 'test value' }";
mockSomeAbstractClass.Protected().Setup<ValidationResult>("ValidateStronglyTypedData", It.IsAny<TestJsonDataType>());
// Act
mockSomeAbstractClass.Object.ValidateData(testData);
// Assert
mockSomeAbstractClass.Protected().Verify("ValidateStronglyTypedData", Times.Once(), It.IsAny<TestJsonDataType>());
, но во время выполнения он жалуется, что не можетнайти метод.Это потому, что защищенный метод является абстрактным?При установке происходит сбой с:
System.ArgumentException: 'Использовать ItExpr.IsNull вместо нулевого значения аргумента, поскольку он препятствует правильному поиску метода.'
Iпытался ItExpr
и до сих пор не работает.Я предполагаю, что это связано с тем, что класс является родовым.