1

由于 Twilio 可编程聊天 SDK 非常复杂,我有时会遇到难以在应用程序中复制的场景,因此我决定进行一些单元测试。问题是,我无法初始化TwilioChatClient. 你知道我在做什么错吗?

Xcode 调试控制台

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>

播客文件

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) {
        // ...
    }
}
4

1 回答 1

0

看起来 TwilioChatClient 可能是通过被测目标引入的,而不是直接通过测试引入的。这可能会导致我们无法找到包含在框架中的资源,即您所看到的消息。

要解决此问题,请确保将 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

可以在此处找到一个工作示例项目。

我们将在未来的版本中努力使这更顺畅,如果以上解决了您看到的单元测试问题,或者我们是否可以提供进一步帮助,请告诉我们。

于 2018-01-16T14:07:31.380 回答