Я хочу написать модульные тесты для MyClass, но его базовый класс - абстрактный класс.
public class MyClass : AbstractBaseClass
{
}
Я хочу имитировать класс AbstractBase , так что я могу пропустить часть логики в его конструкторе при создании экземпляра MyClass, который хочу протестировать. Можно ли это сделать?
//Unit Test
var test = new Mock<IInterface>();
var derivedclass = new DerivedClass(test.Object);
test.Setup(d=>d.MyMethod(It.IsAny<string>()).returns(2);
derivedclass.MyMethod("hello");
// Derived Class
class DerivedClass : AbstractClass{
//constuctor
public DerivedClass(IInterface interface){
_interface = interface;
}
public MyMethod(string str){
return 2;
}
}
//Abstract Class
public abstract class AbstractClass
{
// This method gets called when i create the instance of the derived class in my unit
test..
protected AbstractedClass() : this(new SomeOtherClass()){
DoSomethingElse(); /// I want to skip this method or mock it.
}
}