首先是我的问题,然后是一些细节:
问:在确保属性的值在随后的赋值中使用时,我是否需要桩化(Stub)属性的值?
细节:
我正在使用Rhino Mocks 3.5的AAA语法在MSpec类中。 我已经削减了下面的代码,以使其易于理解。
*不对_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的属性值:*
[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的属性。
那么,第一个代码块是否足以测试,或者第二个代码块(它存根_fooResultMock的Name
属性的值)是必要的?
第二个代码块有没有任何不良影响?