Sobes.tech
Junior — Middle

Je možné vykonať testovanie metód deklarovaných ako súkromné v rámci triedy?

sobes.tech AI

Odpoveď od AI

V iOS (Swift/Objective-C) nie je odporúčané a zvyčajne nie je možné priame testovanie súkromných metód kvôli obmedzeniam prístupu. Súkromné metódy sú určené na vnútornú implementáciu triedy a nemali by byť testované priamo.

Existuje však niekoľko prístupov:

  1. Testujte verejné metódy, ktoré používajú súkromné — týmto spôsobom sa nepriamo overuje logika súkromných metód.
  2. V Swift môžete použiť @testable import a spraviť metódy internal namiesto private, aby k nim mali prístup testy.
  3. V Objective-C môžete v testoch použiť kategórie (category) na prístup k súkromným metódam.

Príklad v Swift:

// V hlavnom module
class MyClass {
    private func privateMethod() -> Int {
        return 42
    }
    func publicMethod() -> Int {
        return privateMethod() + 1
    }
}

// V testoch
@testable import MyModule

func testPublicMethod() {
    let obj = MyClass()
    XCTAssertEqual(obj.publicMethod(), 43)
}

Preto je lepšie testovať správanie triedy cez verejné rozhranie, než priamo pristupovať k súkromným metódam.