Embora eu concorde que a resposta do @ Paul é o caminho recomendado, eu só quero adicionar um caminho alternativo que é fornecido por você moqmesmo.
Desde SomeClassé abstractque é realmente mockable, mas public void SomeMehod()não é. O objetivo é encontrar a maneira de zombar e de alguma forma invocar esse método e, em seguida, usar a CallBasepropagação da chamada para o SomeOtherMethod(). Pode parecer um hack, mas é simples em essência. Pode ser usado no caso se a refatoração proposta não for possível.
// This class is used only for test and purpose is make SomeMethod mockable
public abstract class DummyClass : SomeClass
{
public virtual void DummyMethod() => base.SomeMethod();
}
Em seguida, você pode configurar DummyMethod()para propagar a chamada definindo CallBasesinalizador.
//Arrange
var mock = new Mock<DummyClass>();
mock.Setup(m => m.DummyMethod()).CallBase();
//Act
mock.Object.SomeMethod();
//Assert
mock.Verify(m => m.SomeOtherMethod(), Times.Once);