क्या स्टब/मॉक के ऑब्जेक्ट सदस्य कॉल को स्टब के रूप में परिभाषित किए बिना नकल करना संभव है, और रिटर्न वैल्यू को सभी अलग वर्बोज लाइनों के रूप में भी सेट करना संभव है?क्या राइनो मोक गहरे/घोंसले वाले सदस्यों को सीधे कर सकते हैं?
उदाहरण:
[TestMethod]
public void AssignedPermissions_AssociateExists_ReturnsEdit_Rhino()
{
//Arrange
var fakeConfiguration = MockRepository.GenerateStub<IDomainControllerConfiguration>();
var fakeAssociateRepository = MockRepository.GenerateStub<IAssociateRepository>();
fakeConfiguration.Stub(x => x.AssociateRepository).Return(fakeAssociateRepository);
fakeAssociateRepository.Stub(x=>x.GetAssociatesByRole(null,false,null)).IgnoreArguments()
.Return(new IAssociate[]{MockRepository.GenerateStub<IAssociate>()});
var domain = new DomainController(fakeConfiguration);
const AssignedPermission expected = AssignedPermission.Edit;
//Act
AssignedPermission actual = domain.AssignedPermissions();
//Assert
Assert.AreEqual(expected, actual);
}
उन सभी अस्थायी चर आवश्यक हैं बस नेस्टेड विधि कॉल बाहर ठूंठ?
आप Demeter के कानून का उल्लंघन करने के परिणामों में से एक किया है: http://clintshank.javadevelopersjournal.com/long_unit_test_setup। एचटीएम –
@wcoenen अच्छी तरह से .. कॉन्फ़िगरेशन ऑब्जेक्ट वास्तव में सीधे कॉलर के अंदर क्या नहीं संभालना चाहिए क्या मुझे लगता है? तो कम से कम यह घोंसला का एक स्तर महत्वपूर्ण या मूल्यवान लगता है। क्योंकि यह ज्यादातर एक नंगे डीटीओ – Maslow
है, आपको कॉन्फ़िगरेशन ऑब्जेक्ट पर पास-थ्रू विधियों को जोड़ने की आवश्यकता नहीं है। क्यों न केवल भंडार के लिए एक कन्स्ट्रक्टर तर्क जोड़ें? 'नया डोमेन नियंत्रक (नकली कॉन्फ़िगरेशन, फर्जी रिपोजिटरी);' –