में एक और विधि कहता है हाय मैं Moq ढांचे के लिए नया हूं और इसका उपयोग कैसे करें इसके बारे में कुछ प्रश्न हैं। मैं एक उदाहरण दूंगा और उत्तर के लिए आशा करूंगा।यूनिट परीक्षण में Moq का उपयोग कैसे करें जो एक ही कक्षा
public class Vehicle{
public string RegistrationNumber {get; set;}
public long VehicleIdentifier { get; set; }
public Tyre TyreSpecification { get; set; }
}
public class Tyre {
public long NumberOfTyres {get; set;}
public long TyreSize { get; set;}
}
public interface ISelecter {
Vehicle GetVehicleByRegistrationNumber(string registrationNumber);
Tyre GetTyreSpecification(long vehicleIdentifier);
}
public class Selecter : ISelecter
{
public Vehicle GetVehicleByRegistrationNumber(string registrationNumber)
{
var vehicle = 'Database will give us the vehicle specification';
//Then we do things with the vehicle object
//Get the tyre specification
vehicle.TyreSpecification = GetTyreSpecification(vehicle.VehicleIdentifier);
return vehicle;
}
public Tyre GetTyreSpecification(long vehicleIdentifier)
{
var tyre = 'external manufacture system gets the tyre specification';
//Then do thing with the tyre before returning the object
return tyre;
}
}
मैं उन तरीकों के लिए दो परीक्षण लिखना चाहते हैं:
मैं दो वर्गों, एक अंतरफलक और और एक कार्यान्वयन है। समस्या तब होती है जब मैं GetVehicleByRegistrationNumber
के लिए परीक्षण लिखता हूं, मुझे नहीं पता कि विधि कॉल को GetTyreSpecification
पर कैसे मॉक करें।
परीक्षण तरीकों इस तरह दिखेगा:
[TestClass]
public class SelecterTest
{
[TestMethod]
public void GetTyreSpecification_test()
{
//Arrange
var tyre = new Tyre { NumberOfTyres = 4, TyreSize = 18 };
var mockSelecter = new Mock<ISelecter>();
mockSelecter.SetUp(s=>s.GetTyreSpecification(It.IsAny<long>())).Returns(tyre);
//Act
var tyreSpec = mockSelecter.Object.GetTyreSpecification(123456);
//Assert
Assert.IsTrue(tyreSpec.NumberOfTyres == 4 && tyreSpec.TyreSize == 18);
}
[TestMethod]
public void GetVehicleByRegistrationNumber_test()
{
//Arrange
var vehicle= new Vehicle { VehicleIdentifier = 123456, RegistrationNumber = ABC123, TyreSpecification = new Tyre { Tyresize = 18, NumberOfTyres = 4 }};
var mockSelecter = new Mock<ISelecter>();
mockSelecter.SetUp(s=>s.GetVehicleByRegistrationNumber(It.IsAny<string> ())).Returns(vehicle);
//Act
var vehicle = mockSelecter.Object.GetVehicleByregistrationNumber(123456);
//Assert
Assert.IsTrue(vehicle.Registrationnumber == "ABC123";
}
}
परीक्षा पद्धति GetVehicleByRegistrationNumber_test
में मैं getTyreSpecification
करने के लिए कॉल कैसे नकली हैं?
@VSO द्वारा प्रदान किए गए उत्तर के बारे में कोई प्रतिक्रिया प्राप्त करने के साथ अपना यूनिट परीक्षण लिखना होगा? – Nkosi
@ निकोसी हे नकोसी, अभी तक इसकी समीक्षा करने का कोई मौका नहीं है, मैं इसे एएसएपी देखूंगा। सामान्य रूप से मदद के लिए Ty! – VSO
@Nkosi आपके परीक्षण अच्छे हैं! आपके द्वारा बताए गए परीक्षण से अधिक परीक्षण करने की कोशिश न करें - आपको रेग नंबर द्वारा वाहन प्राप्त करने से कहीं अधिक परीक्षण नहीं करना चाहिए। किसी भी वाहन विशिष्ट परीक्षणों को अपने स्वयं के परीक्षण विधियों में रखा जाना चाहिए जैसा आपने पहले ही लिखा है। एक समय में एक से अधिक चीजों का परीक्षण न करें। –