Я пишу юнит-тест для MyClass
. рассмотрим следующий код:
MyClass.swift
class MyClass {
let collectionPeriod: TimeInterval
var previousCollectDate: Date?
init(period: TimeInterval, previousCollectDate: Date?) {
self.collectionPeriod = period
self.previousCollectDate = previousCollectDate
}
func schedule() { }
func collect() { }
}
MyClassTests.swift
import XCTest
@testable import MyModule
class CollectableTests: XCTestCase {
var sut: MyClass!
override func setUp() { }
override func tearDown() {
self.sut = nil
}
func testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod() {
// let _ = Collectable(period: 11, previousCollectDate: nil)
self.sut = MockCollectable(suiteName: self.testSuiteName)
self.sut?.schedule()
}
}
class MockCollectable: Collectable {
init(suiteName: String) {
super.init(period: 5.0, previousCollectDate: Date())
}
}
происходит странная вещьздесь, когда я выполняю свой тест в этом состоянии, я получаю ошибку сбоя в self.sut = MockCollectable(suiteName: self.testSuiteName)
, но когда я добавляю (раскомментируемую) строку let _ = Collectable(period: 11, previousCollectDate: nil)
, которая буквально ничего не делает, кроме создания одного экземпляра, который не используется в коде, сбой исчезает. Любая идея?
и может быть полезна информация отладчика навигатора:
#0 0x00000001d0dd2aec in swift_checkMetadataState ()
#6 0x0000000104858398 in type metadata accessor for CollectableTests.MockCollectable ()
#7 0x00000001048582c8 in CollectableTests.testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod()
#51 0x00000001c7a49d0c in UIApplicationMain ()
#52 0x00000001025882b0 in main