Moq - Как проверить, что значение свойства установлено через метод set

Я использовал Диаграммы Fusion экстенсивно из веб-приложения Java, но оно должно работать тот же путь от направляющих, так как Вы просто встраиваете Flash через HTML или JavaScript и передаете его данные XML. Это - гладкий пакет, и их поддержка всегда была очень быстро реагирующей.

44
задан Konamiman 15 June 2015 в 09:29
поделиться

4 ответа

Следующее должно работать. Сконфигурируйте свой фиктивный объект как:

var mock=new Mock<IContent>();
mock.SetupSet(content => content.IsCheckedOut=It.IsAny<bool>()).Verifiable();

И после тестового кода:

mock.VerifySet(content => content.IsCheckedOut=It.IsAny<bool>());

Я все равно не тестировал его, поэтому, пожалуйста, скажите мне, работает ли он для вас.

EDIT . В самом деле, это не сработает, поскольку установщик для IsCheckedOut является ложным.

В любом случае, теперь я вижу, что вы никогда не устанавливаете значение IsCheckedOut во время создания класса. Было бы неплохо добавить к классу Content следующее:

public Content()
{
    IsCheckedOut=false;
}
43
ответ дан 26 November 2019 в 22:11
поделиться

Могу я предположить, что вы, возможно, думаете об этом неправильно - обычно вы должны что-то настраивать, выполнять действие, а затем проверять поведение (результат). В этом случае действительно имеет значение, что он не был установлен в false установщиком - важно то, что оно ложно после того, как данный сценарий был выполнен. Если вы проводите тесты изолированно, это может показаться немного странным, но для всего, что ваши тесты будут существовать в наборах.

Ситуация была бы другой, если бы вы тестировали взаимодействие между двумя классами - тогда было бы неплохо настроить ожидание от установщика свойств - поскольку действие установки - это взаимодействие, которое вы тестируете.

Я не знаком с Moq, поскольку использую Rhino.Mocks, но я предполагаю, что будет что-то вроде mock .

2
ответ дан 26 November 2019 в 22:11
поделиться

Почему бы вам просто не настроить для начала извлечение контента? Помните, вы всего лишь тестируете поведение функции CheckIn.

[TestMethod]
public void CheckInSetsCheckedOutStatusToFalse()
{
    // arrange - create a checked out item
    Content c = new Content();
    c.CheckOut();

    // act - check it in
    c.CheckIn();

    // assert - IsCheckedOut should be set back to false
    Assert.AreEqual(false, c.IsCheckedOut);
}
4
ответ дан 26 November 2019 в 22:11
поделиться
..
Mock mockContect = new Mock<Cotent>(); 
mockContent.VerifySet(x => x.IsCheckedOut, Times.Once());

Это сработает? Не уверен, что частный сеттер придет в игру, как не проверял это. но работает на моего общественного сеттера.

Got this from: http://www.codethinked.com/post/2009/03/10/Beginning-Mocking-With-Moq-3-Part-2.aspx

19
ответ дан 26 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: