Как организовать и отстаивать 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()
метод для получения количества раз, что сеттер был вызван.
Ознакомьтесь с документацией по издевательству за примерами.