का उपयोग कर इकाई परीक्षण सेवा कैसे करें मैं अपने वर्तमान प्रोजेक्ट पर माइक्रो ORM के रूप में PetaPoco का उपयोग कर रहा हूं और मुझे यह कहना होगा कि मुझे यह पसंद है। दोनों IMyService और PetaPoco.Database के इंजेक्शन के लिए PetaPoco.DatabasePetaPoco.Database
public class MyService : IMyService
{
private readonly PetaPoco.Database _database;
public MyService(PetaPoco.Database database)
{
_database = database;
}
public void SaveSomething(MyObject myObject)
{
//...custom logic
_database.Save(myObject);
}
}
मैं आईओसी (Castle.Windsor) का उपयोग कर रहा इकाई परीक्षण सेवाओं है कि का उपयोग करें - हालांकि, मैं अपने आप सरल परिदृश्य के साथ संघर्ष कर पाया जहां भी आवश्यक हो।
अब, जब मैं अपने सेवा का परीक्षण इकाई करने की कोशिश मैं यह सत्यापित करने सहेजें विधि ठीक से लागू किया गया था में ठीक से नकली ठूंठ PetaPoco.Database में असमर्थ हूँ। मैं NUnit और राइनो का उपयोग कर रहा हूं। यूनिट परीक्षण और मॉकिंग के लिए मैक्स।
[TestFixture]
public class MyServiceTests
{
private PetaPoco.Database _database;
[SetUp]
public void SetUp()
{
_database = MockRepository.GenerateMock<Database>("");
}
[Test]
public void ShouldProperlySaveSomething()
{
//Arrange
var myObject = new MyObject();
_database.Expect(db => db.Save(Arg<MyObject>.Is.Anything));
var myService = new MyService(_database);
//Act
myService.SaveSomething(myObject);
//Assert
_database.VerifyAllExpectations();
}
}
मुझे पता है कि यह अगर मैं PetaPoco.Database से एक अंतरफलक निकालने और इसके खिलाफ, या PetaPoco के तरीकों है कि मैं नकली करना चाहते virtualizing से मजाक कर हल किया जा सकता है, लेकिन मुद्दा यह है कि मैं है पेटापोको में परिवर्तन नहीं करना चाहते हैं।
क्या यह करने योग्य है?
ग्रेट जॉब @ स्कोटाइम, यह वही है जो मुझे चाहिए! हालांकि, मैं उत्सुक हूं, क्या आपने मूल कोडबेस पर पुल अनुरोध बनाने की कोशिश की है? – ljubomir
कई बार, लेकिन अब लाइब्रेरी के हिस्से के रूप में मेरे पास बहुत अधिक सुविधाएं हैं, जिनमें बहुत से बग फिक्स हैं इसलिए वे लगभग दो अलग हैं। – Schotime
क्या पेटापोको की सभी सुविधाएं समर्थित हैं (जैसे टेम्पलेट्स) या क्या सामान गुम है? ऐसा लगता है कि यह कांटा भी करता है जो यह प्लगइन पेटापोको करता है। रिलेशनशिप एक्सटेंशन। क्या आप एक ही कोड का उपयोग कर रहे हैं?मैं सोच रहा हूं क्योंकि आपको अपनी कुछ विशेषताओं पर कोई दस्तावेज नहीं दिख रहा है, इसलिए उम्मीद है कि मैं अन्य मौजूदा प्लगइन से उदाहरणों का उपयोग कर सकता हूं। – chobo2