Как организовать и отстаивать MustBeCalled для установщика свойств в JustMock

У меня есть смоделированный класс со свойством, которое имеет get и set. Мой тестируемый код вызывает установщик для назначения значения строки подключения. Мой тестовый код макетирует класс, который содержит свойство, и я добавляю MustBeCalled, когда устраиваю макет.

ViewModel код:

public class ClientViewModel
{
    private readonly IMgmtDataProvider dataProvider;

    public ClientViewModel(IMgmtDataProvider dataProvider)
    {
        this.dataProvider = dataProvider;            
    }
    private string clientConnectionString;
    public string ClientConnectionString
    {
        get { return clientConnectionString; }

        set
        {
            clientConnectionString = value;
            if (dataProvider != null)
                dataProvider.ClientConnectionString = value;
        }
    }
}

Тестовый код:

//Arrange
const string connectionString = "THIS IS MY CONNECTIONSTRING";
var mockedDataProvider = Mock.Create<IMgmtDataProvider>();
Mock.Arrange(() => mockedDataProvider.ClientConnectionString).MustBeCalled();

//Act
var testViewModel = new ClientViewModel(mockedDataProvider);
testViewModel.ClientConnectionString = connectionString;

//Assert
var callCount = Mock.GetTimesCalled(() => mockedDataProvider.ClientConnectinString);
Assert.IsTrue(callCount > 0);

мой Mock.Arrange(...).MustBeCalled(); По-видимому, применяется к получателю, а не к установщику. Поэтому, когда я вызываю Mock.GetTimesCalled(...), он возвращает 0. Мне нужно применить MustBeCalled к установщику, а не к получателю. Я хочу убедиться, что строка подключения провайдера данных устанавливается, когда строка подключения viewmodel установлена. Как мне сказать JustMock, чтобы отслеживать, сколько раз вызывается смоделированный сеттер?

1 ответ

Решение

Сеттеры расположены с использованием Mock.ArrangeSet() метод, вот так:

Mock.ArrangeSet(() => mockedDataProvider.ClientConnectionString = Arg.AnyString).MustBeCalled();
....
Mock.Assert(mockedDataProvider); // assert all expectations on this mock

Вы также можете использовать Mock.AssertSet() в качестве альтернативы ArrangeSet().MustBeCalled() комбо.

И, наконец, есть Mock.GetTimesSetCalled() метод для получения количества раз, что сеттер был вызван.

Ознакомьтесь с документацией по издевательству за примерами.

Другие вопросы по тегам