Сначала мой вопрос, а затем некоторые детали:
Q: Нужно ли вводить в тупик значение свойства, когда оно используется в последующем присваивании?
Подробности:
Я использую синтаксис AAA Rhino Mocks 3.5 в классах MSpec.Я обрезал код ниже, чтобы его было (надеюсь) легко обмануть.
* Значение свойства Not Stubbing _fooResultMock: *
[Subject("Foo")]
public class when_foo {
Establish context = () => {
_fooDependencyMock.Stub(x => x.GetResult()).Return(_fooResultMock);
_foo = new Foo(_fooDependencyMock);
};
Because action = () => {
_foo.Whatever();
};
It should_set_the_name_field = () => {
_fooTargetMock.AssertWasCalled(x => x.Name = _fooResultMock.Name);
};
}
* Значение свойства _fooResultMock Stubbing: *
[Subject("Foo")]
public class when_foo {
Establish context = () => {
_fooDependencyMock.Stub(x => x.GetResult()).Return(_fooResultMock);
_fooResultMock.Stub(x => x.Name).Return(_theName); // _theName!
_foo = new Foo(_fooDependencyMock);
};
Because action = () => {
_foo.Whatever();
};
It should_set_the_name_field = () => {
_fooTargetMock.AssertWasCalled(x => x.Name = _theName); // _theName!
};
}
Важным для моего теста является то, что значение, найденное в свойстве _fooResultMock Name
, присваивается свойству _fooTargetMock.
Таким образом, первый блок кода адекватно проверяет это или является вторым кодомблок (который выставляет значение свойства Name
_fooResultMock) необходим?
Является ли второй блок нежелательным по какой-либо причине?