Это кажется чем-то простым, но я не могу заставить его работать.
У меня есть класс с методом Save, который просто вызывает другой метод ShouldBeCalled(). Я хочу проверить, что если я вызываю Save(), то другой метод ShouldBeCalled() выполняется хотя бы один раз. Я думал, что могу сделать следующее.
public class ClassA
{
public virtual void Save()
{
ShouldBeCalled();
}
public virtual void ShouldBeCalled()
{
//This should get executed
}
}
[TestFixture]
public class ClassA_Test
{
[Test]
public void Save_Should_Call_ShouldBeCalled()
{
var mockClassA = new Mock<ClassA>();
mockClassA.Object.Save();
mockClassA.Verify(x => x.ShouldBeCalled(), Times.AtLeastOnce());
}
}
Но я получаю исключение "Ожидаемое обращение к макету хотя бы один раз, но никогда не выполнялся: x = > x.ShouldBeCalled()"
Это всего лишь предположение, но Мок переопределяет метод Save() с его собственной версией, которая игнорирует все, что у меня есть внутри метода реального объекта Save().