首先是我的问题,然后是一些细节:
问:在确保在后续赋值中使用属性值时,我是否需要对属性的值进行存根?
详细信息:
我在 MSpec 类中使用 Rhino Mocks 3.5 的 AAA 语法。我已经修剪了下面的代码以使其(希望)易于理解。
*不存根 _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 的属性。
那么,第一个代码块是否充分测试了这一点,或者第二个代码块(存根 _fooResultMockName
属性的值)是否必要?
出于任何原因,第二个区块是否不可取?