2017-12-18 2 views
0

Da Twilio Programmable Chat SDK ziemlich komplex ist, stolperte ich manchmal in schwer zu replizierende Szenarien in der App, also entschloss ich mich, einige Komponententests durchzuführen. Das Problem ist, ich kann das TwilioChatClient nicht initialisieren. Hast du eine Idee, was mache ich falsch?So testen Sie TwilioChatClient auf iOS mit Swift und CocoaPods

Xcode Debug-Konsole

Test Case '-[ONNTests.ONNTests testTwoClientCreation]' started. 
    0x7000065c6000 | 12/18/13:26:18.979 | FATAL | Chat-iOS | Error instantiating client framework path. 
    0x7000065c6000 | 12/18/13:26:18.980 | DEBUG | Chat-iOS | releasing chat client instance: <TwilioChatClient: 0x7fcf01552c20> 

Podfile

target 'MyTests' do 
    pod 'TwilioChatClient', '~> 2.1.0' 
end 

-Code

import XCTest 
import TwilioChatClient 

class MyTests: XCTestCase { 
    var client1: TwilioChatClient? 

    let e1 = XCTestExpectation(description: "Download Twilio token 1") 
    let e2 = XCTestExpectation(description: "Create client 1 successfully") 

    func testTwilioClientCreation() { 
     TwilioChatClient.setLogLevel(.debug) 

     getToken { [unowned self] token in 
      self.e1.fulfill() 
      TwilioChatClient.chatClient(withToken: token, properties: nil, delegate: self) { [unowned self] (result, client) in 
       if result.isSuccessful() { 
        self.client1 = client 
        self.e11.fulfill() 
       } 
      } 
     } 

     wait(for: [e1, e2], timeout: 20.0) 
    } 

    func getToken(completion: @escaping (_ token: String) -> Void) { 
     // ... 
    } 
} 
+0

Twilio Entwickler Evangelist hier. Ich bin nicht sehr informiert über Tests in iOS, aber ich habe intern gefragt, ob jemand anderes helfen kann. Erhalten Sie das Token von einem externen Dienst in diesem Test? Das scheint mir im Allgemeinen flockig zu sein. Wenn Sie einen vollständigen "TwilioChatClient" innerhalb eines Tests instanziieren, werden auch alle Arten von Verbindungen zum Dienst von Twilio aufgebaut. Können Sie den Twilio-Dienst selbst verspotten? – philnash

+0

Hallo @philnash danke für deine Antwort. Das Abrufen des Tokens funktioniert gut für mich. Dies scheint eine Komplikation mit dem Projektaufbau, den Pfaden oder etwas ähnlichem zu sein. Ich weiß, dass es eine gute Idee und ein gemeinsamer Ansatz ist, solche Dienste im Test zu testen, aber ich versuche nicht, meine App zu testen, sondern Twilio selbst. Ich habe bereits 3 Bugs im Programmable Chat SDK für iOS gefunden (sie sind bereits auf GitHub Issues oder in Ihren Support Tickets), also versuche ich einfach eine Umgebung zu haben, in der ich einige komplexe Szenarien einfach testen/replizieren kann (create channel, einladen, annehmen, verlassen, löschen, etc ...). –

+0

Dann kann ich nicht helfen Ich habe Angst, ich weiß einfach nicht genug über das Testen in iOS. Vielen Dank, dass Sie beim Testen des SDK geholfen haben. Ich hoffe, dass die gefundenen Fehler schnell behoben werden. – philnash

Antwort

0

Es sieht aus wie die Twilio ChatClient wird möglicherweise über das zu prüfende Ziel und nicht direkt über den Test gebracht. Dies kann zu einem Problem bei der Suche nach Ressourcen führen, die im Framework enthalten sind. Dies ist die Nachricht, die Sie gerade sehen.

Um dies zu umgehen, stellen Sie sicher, der TwilioChatClient Rahmen als eine Abhängigkeit zu Ihrem Testziel direkt zum Beispiel erklärt:

target 'TestingSample' do 
    pod 'TwilioChatClient', '~> 2.1.0' 

    target 'TestingSampleTests' do 

    end 
end 
beachten

Bitte auch ist es wichtig, der Kunde, wenn Sie zum Herunterfahren mit fertig sind entweder am Ende Ihrer Testmethode oder in einer gemeinsamen Abreißmethode.

wait(for: [e1, e2], timeout: 20.0) 

self.client1?.shutdown() 
self.client1 = nil 

Eine Arbeitsbeispielprojekt kann here finden.

Wir arbeiten daran, dies in einer zukünftigen Version reibungsloser zu gestalten. Bitte lassen Sie uns wissen, ob das oben genannte Problem mit dem Komponententest gelöst wird oder ob wir Ihnen weiterhelfen können.

Verwandte Themen