alır bir başlatıcı geçersiz kılma Alt sınıflar, sınama altında örnek sağlamak için test kablo demetini genişletecek ve kendi alt sınıfı özel bir sınama ekleyebilirsiniz fikrini kullanarak yeniden kullanılabilir bir test kablo takımı oluşturmaya çalışıyorum yöntemler, böyle bir şey:Swift: Bir NSInvocation
Ancakclass FooTestHarness: XCTestCase {
let instance: Foo
init(instance: Foo) {
self.instance = instance
}
func testFooBehavior() {
XCTAssert(instance.doesFoo())
}
}
class FooPrime: Foo {
func doesFooPrime(): Bool { /* ... */ }
}
class FooPrimeTests: XCTestCase {
init() {
super.init(FooPrime())
}
func myInstance(): FooPrime {
return instance as FooPrime
}
func testFooPrimeBehavior() {
XCTAssert(myInstance().doesFooPrime())
}
}
, Xcode en testrunner FooPrimeTests
çalıştırmayı denediğinde, bu no-arg init()
çağırmaz, bu init(invocation: NSInvocation!)
çağırır (ve bir olmadığından başarısız).
init(invocation: NSInvocation!, instance: Foo) {
self.instance = instance
super.init(invocation)
}
ve FooPrimeTests
yılında: Ben FooTestHarness
bu geçersiz kılmak için çalıştı
init(invocation: NSInvocation!) {
super.init(invocation, FooPrime())
}
ama bu mesajın 'NSInvocation' is unavailable
başarısız olur.
Bir çözüm var mı?
Aynı sorunu yaşıyorum! – Andy
Bir geçici çözüm olarak, belki de nesnenizi alay etmeye çalışabilirsiniz. Init çağrısını yeniden yönlendirebileceksiniz. – Pintouch