Sobes.tech
Junior — Middle

Կարո՞ղ է իրականացնել մեթոդների թեստավորումը, որոնք հայտարարված են որպես մասնավոր, դասի ներսում։

sobes.tech AI

Պատասխան AI-ից

iOS (Swift/Objective-C) համակարգում, մասնավոր մեթոդների ուղղակի փորձարկումը խորհուրդ չի տրվում և սովորաբար հնարավոր չէ մուտքի սահմանափակումների պատճառով: Մասնավոր մեթոդները նախատեսված են դասի ներքին իրականացման համար և չպետք է ուղղակիորեն փորձարկվեն:

Այնուամենայնիվ, կան մի քանի մոտեցումներ՝

  1. Փորձարկել հանրային մեթոդները, որոնք օգտագործում են մասնավոր մեթոդներ — այս կերպ անուղղակիորեն ստուգվում է մասնավոր մեթոդների տրամաբանությունը:
  2. Swift-ում կարող եք օգտագործել @testable import և դարձնել մեթոդները internal փոխարենը private, որպեսզի փորձարկումները կարողանան մուտք ունենալ:
  3. 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)
}

Անհրաժեշտ է ավելի լավ է փորձարկել դասի վարքագիծը հանրային ինտերֆեյսի միջոցով, քան ուղղակի մուտք գործել մասնավոր մեթոդներ։