मेरे पास एक विधि है जिसका संचालन इसके आश्रितों पर निर्भर करता है, जैसे नीचे। क्या यह अभी भी इकाई परीक्षण कर रहा है? चूंकि इकाई परीक्षण किसी भी व्यावसायिक तर्क का परीक्षण नहीं कर रहा है, बल्कि मैक्स द्वारा।क्या यूनिट टेस्ट एक बूलियन वैल्यू को स्विच के रूप में स्वीकार करके डबल-ड्यूटी कर सकता है, या क्या मुझे दो अलग-अलग परीक्षण लिखना चाहिए जो परीक्षण कोड को डुप्लिकेट करते हैं?
यूनिट नीचे परीक्षण:
कृपया ध्यान दें कि विधि के opetions expectedCustomerValidality
द्वारा निर्धारित किया जाता है, जो परीक्षण के द्वारा सेटअप है। अधिकतर, तर्क mocks से निर्धारित होता है (उदाहरण के लिए Setup(c => c.IsValid())
[Test]
[TestCase(true)]
[TestCase(false)]
public void AddCustomer(bool expectedCustomerValidality)
{
//using Moq
companyRepositoryMock.Setup(c => c.GetById(It.IsAny<int>())).Returns(new Company());
customerValidatorMock.Setup(c => c.IsValid(It.IsAny<Customer>())).Returns(expectedCustomerValidality);
var customer = new Customer
{
Firstname = "firstName",
Surname = "surname",
Company = new Company { Id = 1 }
};
var addCustomer = customerServiceSut.AddCustomer(customer);
Assert.AreEqual(expectedCustomerValidality,addCustomer);
}
उत्पादन नीचे कोड:।
public class CustomerService : ICustomerService
{
private ICompanyRepository companyRepository;
private ICustomerRepository customerRepository;
private ICustomerValidator customerValidator;
public CustomerService(ICompanyRepository companyRepository, ICustomerRepository customerRepository, ICustomerValidator customerValidator)
{
this.companyRepository = companyRepository;
this.customerRepository = customerRepository;
this.customerValidator = customerValidator;
}
public bool AddCustomer(Customer customer)
{
customer.Company = companyRepository.GetById(customer.Company.Id); ;
if (customerValidator.IsValid(customer))
{
customerRepository.AddCustomer(customer);
return true;
}
return false;
}
}
प्रश्न:
- AddCustomer() की आवश्यकता इकाई परीक्षण है
यदि हां, तो वर्तमान इकाई परीक्षण सही तरीके से प्रदर्शन कर रहा है?
1 यदि नहीं, तो यूनिट परीक्षण करने का उचित तरीका क्या है?
1. गैर-तुच्छ तर्क वाले सभी विधियों को यूनिट परीक्षण किया जाना चाहिए। 2. "सही" से आपका क्या मतलब है? –
1. आपका मतलब है कि AddCustomer में गैर-तुच्छ तर्क शामिल है। लेकिन यह इसकी निर्भरता पर निर्भर करता है, जो मजाक कर रहा है। 2. परीक्षण में, यदि शाखा नकली वस्तु द्वारा निर्धारित की जाती है। – Pingpong