Junior — Middle
Կարո՞ղ է իրականացնել մեթոդների թեստավորումը, որոնք հայտարարված են որպես մասնավոր, դասի ներսում։
sobes.tech AI
Պատասխան AI-ից
iOS (Swift/Objective-C) համակարգում, մասնավոր մեթոդների ուղղակի փորձարկումը խորհուրդ չի տրվում և սովորաբար հնարավոր չէ մուտքի սահմանափակումների պատճառով: Մասնավոր մեթոդները նախատեսված են դասի ներքին իրականացման համար և չպետք է ուղղակիորեն փորձարկվեն:
Այնուամենայնիվ, կան մի քանի մոտեցումներ՝
- Փորձարկել հանրային մեթոդները, որոնք օգտագործում են մասնավոր մեթոդներ — այս կերպ անուղղակիորեն ստուգվում է մասնավոր մեթոդների տրամաբանությունը:
- Swift-ում կարող եք օգտագործել
@testable importև դարձնել մեթոդներըinternalփոխարենըprivate, որպեսզի փորձարկումները կարողանան մուտք ունենալ: - Objective-C-ում, փորձարկումների մեջ կարող եք օգտագործել կատեգորիաներ (category), որպեսզի հասանելի լինեն մասնավոր մեթոդները:
Swift-ի օրինակ՝
// Հիմնական մոդուլում
class MyClass {
private func privateMethod() -> Int {
return 42
}
func publicMethod() -> Int {
return privateMethod() + 1
}
}
// Փորձարկումներում
@testable import MyModule
func testPublicMethod() {
let obj = MyClass()
XCTAssertEqual(obj.publicMethod(), 43)
}
Անհրաժեշտ է ավելի լավ է փորձարկել դասի վարքագիծը հանրային ինտերֆեյսի միջոցով, քան ուղղակի մուտք գործել մասնավոր մեթոդներ։