2017-12-18 8 views
0

Twilio Programmable Chat SDK는 매우 복잡하기 때문에 때로는 앱에서 복제하기 어려운 시나리오로 실행되기 때문에 일부 단위 테스트를하기로 결정했습니다. 문제는, TwilioChatClient을 초기화 할 수 없다는 것입니다. 내가 뭘 잘못하고 있는지 생각해? Swift 및 CocoaPods를 사용하여 iOS에서 TwilioChatClient를 단조하는 방법

은 엑스 코드 디버그 콘솔

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 

코드

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 개발자 전도사입니다. iOS에서 테스트하는 것에 대해 너무 많은 정보를 얻지는 못했지만 내부적으로 다른 사람이 도울 수 있는지 알아보기 위해 요청했습니다. 이 테스트에서 외부 서비스에서 토큰을 검색하고 있습니까? 그것은 일반적으로 나에게는 색다른 것처럼 보일 것입니다. 또한, 테스트 중에 완전한'TwilioChatClient'를 인스턴스화하는 것은 Twilio의 서비스에 대한 모든 종류의 연결을 설정하는 것입니다. Twilio 서비스 자체를 조롱 할 수 있습니까? – philnash

+0

안녕하세요 @ philnash 귀하의 회신에 감사드립니다. 토큰을 가져 오는 것이 나를 위해 잘 작동합니다. 이것은 프로젝트 설정, 경로 또는 이와 유사한 몇 가지 복잡한 것으로 보입니다. 나는 테스트에서 이와 같은 서비스를 조롱하는 것이 좋은 생각이고 일반적인 접근법이라는 것을 알고 있지만, 내 애플 리케이션을 테스트하려고하는 것이 아니라 Twilio 그 자체이다. 이미 iOS 용 Programmable Chat SDK (GitHub 문제 또는 Support Ticket에 있음)에 버그가 3 개 발견되어 복잡한 시나리오를 쉽게 테스트/복제 할 수있는 환경을 구축하고 있습니다 (채널, 초대, 수락, 떠남, 삭제 등). –

+0

그럼 내가 두려워 할 수는 없지만, iOS에서 테스트하는 것에 대해 충분히 알지 못합니다. SDK 테스트를 도와 주셔서 감사합니다. 찾으시는 버그가 신속하게 해결되기를 바랍니다. – philnash

답변

0

그것은 Twilio처럼 보인다 ChatClient는 테스트 대상이 아닌 직접 테스트를 통해 가져올 수 있습니다. 이로 인해 프레임 워크에 포함 된 리소스 인 메시지를 찾는 기능에 문제가 발생할 수 있습니다.

는이 문제를 해결하기 위해, 예를 들어, TwilioChatClient 프레임 워크를 직접 테스트 대상에 대한 종속성으로 선언되어 있는지 확인하십시오

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

    target 'TestingSampleTests' do 

    end 
end 

도 있습니다 당신이 함께 할중인 클라이언트 종료하는 것이 중요합니다 테스트 방법이 끝나거나 공유 해체 방법으로 테스트 해보십시오.

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

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

작업 예제 프로젝트

here를 찾을 수 있습니다.

앞으로 출시 될 때 더 원활하게 작동하도록 노력할 것입니다. 위에 나온 단위 테스트 문제가 해결되거나 더 이상 도움이 될 경우 알려 주시기 바랍니다.