როგორ დასცინი სტატიკურ კლასს?
როგორ დასცინი სტატიკურ კლასს?

ვიდეო: როგორ დასცინი სტატიკურ კლასს?

ვიდეო: როგორ დასცინი სტატიკურ კლასს?
ვიდეო: DARK ANGELS | Full Movie Free on YouTube 2024, მაისი
Anonim

შექმენით ინტერფეისი DriverManager-ისთვის, დაცინვა ეს ინტერფეისი, შეიტანეთ იგი რაიმე სახის დამოკიდებულების ინექციის საშუალებით და გადაამოწმეთ ეს დაცინვა . დაკვირვება: როცა ურეკავ სტატიკური მეთოდი ფარგლებში ა სტატიკური ერთეული, თქვენ უნდა შეცვალოთ კლასი @PrepareForTest-ში. მაშინ, თქვენ უნდა მოამზადოთ კლასი ეს კოდი მდებარეობს.

აქედან გამომდინარე, შეგვიძლია დავცინოთ სტატიკური მეთოდები?

Mockito გვაძლევს შექმნის საშუალებას დაცინვა ობიექტები. მას შემდეგ, რაც სტატიკური მეთოდი მიეკუთვნება კლასს, Mockito-ში გზა არ არის იმიტირებული სტატიკური მეთოდები . თუმცა, ჩვენ შეგვიძლია გამოიყენეთ PowerMock ერთად Mockito Framework-ისთვის იმიტირებული სტატიკური მეთოდები.

შეგვიძლია დავცინოთ C# სტატიკური მეთოდები? 4 პასუხი. Moq (და სხვა DynamicProxy-ზე დაფუძნებული დამცინავი ჩარჩოები) არ შეუძლიათ დაცინვა ყველაფერი, რაც არ არის ვირტუალური ან აბსტრაქტული მეთოდი . Ალტერნატიულად, შეგეძლო გადააკეთეთ თქვენი დიზაინი აბსტრაქტულ ზარებზე სტატიკური მეთოდები და მიაწოდეთ ეს აბსტრაქცია თქვენს კლასს დამოკიდებულების ინექციის საშუალებით.

ანალოგიურად, ადამიანები კითხულობენ, შეგვიძლია თუ არა MOQ-ის გამოყენებით სტატიკური მეთოდების დაცინვა?

დამცინავი სტატიკური მეთოდები უფასო ინსტრუმენტები, როგორიცაა მოქ შეუძლია მხოლოდ დაცინვა ინტერფეისები ან ვირტუალური/აბსტრაქტული მეთოდები საჯარო ნაგულისხმევი კონსტრუქტორის მქონე კლასებზე. თუ შენ საჭიროა ნამდვილად იმიტირებული სტატიკური მეთოდები , შენ უნდა გამოიყენოთ კომერციული ინსტრუმენტი, როგორიცაა Microsoft Fakes (Visual Studio Enterprise-ის ნაწილი) ან Typemock Isolator.

რატომ არის სტატიკური მეთოდები ცუდი?

OO-ს სამყაროში სტატიკური მეთოდები არიან ანტიმატერია. ისინი არ უნდა იყვნენ ცუდი , მაგრამ ისინი საშიშია, რადგან ისინი არასწორად გამოიყენება. არსებობს მხოლოდ ორი სიტუაცია, როდესაც სტატიკური მეთოდები ან ცვლადები გამოიყენება და ეს არ არის საზიზღრობა. სტატიკური მეთოდები არის ღირებული და მოქმედი მეთოდი ობიექტის შექმნის.

გირჩევთ: