Я использовал Диаграммы Fusion экстенсивно из веб-приложения Java, но оно должно работать тот же путь от направляющих, так как Вы просто встраиваете Flash через HTML или JavaScript и передаете его данные XML. Это - гладкий пакет, и их поддержка всегда была очень быстро реагирующей.
Следующее должно работать. Сконфигурируйте свой фиктивный объект как:
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;
}
Могу я предположить, что вы, возможно, думаете об этом неправильно - обычно вы должны что-то настраивать, выполнять действие, а затем проверять поведение (результат). В этом случае действительно имеет значение, что он не был установлен в false установщиком - важно то, что оно ложно после того, как данный сценарий был выполнен. Если вы проводите тесты изолированно, это может показаться немного странным, но для всего, что ваши тесты будут существовать в наборах.
Ситуация была бы другой, если бы вы тестировали взаимодействие между двумя классами - тогда было бы неплохо настроить ожидание от установщика свойств - поскольку действие установки - это взаимодействие, которое вы тестируете.
Я не знаком с Moq, поскольку использую Rhino.Mocks, но я предполагаю, что будет что-то вроде mock .
Почему бы вам просто не настроить для начала извлечение контента? Помните, вы всего лишь тестируете поведение функции 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);
}
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