मैं व्यवहार संचालित विकास पर अपना हाथ आजमा रहा हूं और मैं अपने डिजाइन को अनुमान लगा रहा हूं क्योंकि मैं इसे लिख रहा हूं। यह मेरी पहली ग्रीनफील्ड परियोजना है और यह सिर्फ अनुभव की कमी हो सकती है। वैसे भी, मैं जिस कक्षा में लिख रहा हूं उसके लिए यहां एक सरल कल्पना है। यह समर्पित व्यवहार संचालित ढांचे का उपयोग करने के बजाय एनडीआईटी में बीडीडी शैली में लिखा गया है। ऐसा इसलिए है क्योंकि परियोजना .NET 2.0 को लक्षित करती है और सभी बीडीडी ढांचे ने .NET 3.5 को गले लगा लिया है।क्या यह एक खराब डिजाइन है?
[TestFixture]
public class WhenUserAddsAccount
{
private DynamicMock _mockMainView;
private IMainView _mainView;
private DynamicMock _mockAccountService;
private IAccountService _accountService;
private DynamicMock _mockAccount;
private IAccount _account;
[SetUp]
public void Setup()
{
_mockMainView = new DynamicMock(typeof(IMainView));
_mainView = (IMainView) _mockMainView.MockInstance;
_mockAccountService = new DynamicMock(typeof(IAccountService));
_accountService = (IAccountService) _mockAccountService.MockInstance;
_mockAccount = new DynamicMock(typeof(IAccount));
_account = (IAccount)_mockAccount.MockInstance;
}
[Test]
public void ShouldCreateNewAccount()
{
_mockAccountService.ExpectAndReturn("Create", _account);
MainPresenter mainPresenter = new MainPresenter(_mainView, _accountService);
mainPresenter.AddAccount();
_mockAccountService.Verify();
}
}
मेनपेंटर द्वारा उपयोग किए जाने वाले इंटरफेस में से कोई भी वास्तविक कार्यान्वयन अभी तक नहीं है। नए खाते बनाने के लिए खाता सेवा जिम्मेदार होगी। अलग-अलग प्लगइन के रूप में परिभाषित IAccount के कई कार्यान्वयन हो सकते हैं। रनटाइम पर, यदि एक से अधिक हो तो उपयोगकर्ता को यह चुनने के लिए कहा जाएगा कि कौन सा खाता प्रकार बनाना है। अन्यथा खाता सेवा केवल एक खाता बनायेगी।
उन चीजों में से एक जो मुझे असहज है, यह है कि केवल एक ही नमूना/परीक्षण लिखने के लिए कितने मोजे की आवश्यकता होती है। क्या यह बीडीडी का उपयोग करने का सिर्फ एक दुष्प्रभाव है या क्या मैं इस चीज़ के बारे में गलत तरीके से जा रहा हूं?
[अपडेट]
यहाँ MainPresenter.AddAccount
public void AddAccount()
{
IAccount account;
if (AccountService.AccountTypes.Count == 1)
{
account = AccountService.Create();
}
_view.Accounts.Add(account);
}
का वर्तमान क्रियान्वयन किसी भी सुझाव, सुझाव या विकल्प का स्वागत करते है।
यहां कुछ अच्छी सलाह +1 –