Используя Rhino Mocks, вы можете установить ожидание для свойства.В основном это означает, что вы ожидаете, что для свойства будет установлено определенное значение.Используя ваш пример, пример тела метода теста будет таким:
var mock = MockRepository.GenerateMock ();mock.Expect (x => x.Property1 = "Test");
var classUnderTest = new ClassUnderTest(mock);
classUnderTest.MethodUnderTest();
mock.VerifyAllExpectations();
Это позволит проверить, было ли для Property1
установлено значение "Test" в какой-то момент между вызовом mock.Expect
и вызов mock.MethodUnderTest
(технически, Property1
может быть установлен в конструкторе ClassUnderTest
).
Чтобы проверить, что свойство было установлено, и игнорировать то, что оно было фактически установлено,просто соедините IgnoreArguments
с возвращением вызова Expect
, например:
mock.Expect (x => x.Property1 = "Test1"). IgnoreArguments ();
Один из способов проверить более сложные свойства только для записи - использовать метод GetArgumentsForCallsMadeOn
.Это позволяет вам получить список аргументов, передаваемых каждому «вызову» свойства.Код для этого будет выглядеть следующим образом:
var mock = MockRepository.GenerateMock ();
var classUnderTest = new ClassUnderTest(mock);
classUnderTest.MethodUnderTest();
//the argument in the Action is ignored, so just use null
//Property1 is of type List<string>
var arguments = mock.GetArgumentsForCallsMadeOn(x => x.Property1 = null);
//arguments[0] contains the list of arguments for the first "call" of the
//property the first index (0) of that would contain the first argument
var firstCallArguments = arguments[0];
var firstArgument = (List<string>)firstCallArguments[0];
Assert.AreEqual(3, firstArgument.Count);
Я уверен, что Moq имеет аналогичную функциональность, если вы хотите использоватьэто вместо этого.