我正在运行UI测试,我需要使用waitForExpectationsAPI 测试异步函数.
我收到这个错误:
"NSInternalInconsistencyException","API违规 - 调用等待没有任何期望已经设置."
我真的不明白,因为我已经正确地创造了期望.
此外,似乎存在文档错误:根据文档API,expectation(description:)但编译器不接受,而是我需要XCTestExpectation()用来创建一个.
func testExample() {
XCTAssertTrue(state == .STATE_NOT_READY)
let exp1 = XCTestExpectation()
let queue = DispatchQueue(label: "net.tech4freedom.AppTest")
let delay: DispatchTimeInterval = .seconds((2))
queue.asyncAfter(deadline: .now() + delay) {
XCTAssertTrue(true)
exp1.fulfill()
}
self.waitForExpectations(timeout: 4){ [weak self] error in
print("X: async expectation")
XCTAssertTrue(true)
}
self.waitForExpectations(timeout: 10.0, handler: nil)
}
Run Code Online (Sandbox Code Playgroud) 我以为我了解 StreamBuilders,但我有一些疑惑让我感到困惑。
我认为 ConnectionState.waiting 意味着正在创建与流的连接,因此仍然无法接收流数据。不过就我而言,我总是收到 ConnectionState.waiting 。第一次数据是initialData 中指定的数据,这很好,但是如果ConnectionState 总是“等待”,我从流evnt 获取值之后。为了在此处显示这一点,您可以查看第一次调用 builder 函数时的屏幕截图。这看起来不错:快照值是initialData参数提供的值并且ConnectionState正在等待

这里的快照值是一个新的流值(所以现在连接状态应该是活动的)但实际上,connectionState 仍在等待!!
那我该怎么解释呢?这是如何运作的?
为什么即使 connectionState 一直在等待,StreamBuilder 也会不断接收快照?为什么它不活跃?
我该如何调试?
我目前正在开发一个使用 bloc 架构的应用程序。我的集团专门使用流与 UI 进行通信。因此,除了构造函数之外,它的所有方法都是私有的(它们以“_”开头)。
所以问题是如何从文本包中的测试类中测试 bloc 的私有方法,使其无法访问其他包的私有方法。
谢谢
我有一个 Service 类,它保存一组子服务,其作用是使用 2 个闭包回调将一些事件发送回服务。
该服务使用 2 个闭包来初始化子服务对象,这两个闭包采用对服务的弱引用以避免保留周期。
public class T4fService {
lazy var t4fSubServices: [T4fSubService?] = self.populateSubServices()
let callbackOnServiceReady: (_ isReady: Bool) -> ()
let callbackOnBleEvent: (_ broadcastDict: NotificationDict) -> ()
init?(id: T4fServiceId,
callbackOnServiceReady: @escaping (_ isReady: Bool) -> (),
callbackOnBleEvent: @escaping CharacteristicCallback){
self.callbackOnServiceReady = callbackOnServiceReady
self.callbackOnBleEvent = callbackOnBleEvent
}
func populateSubServices() -> [T4fSubService?] {
switch self.t4fServiceId {
case .compassServiceId:
return [T4fSubService( t4fBlePeripheralType: .Two4All, t4fCharacteristicUuidsArray: [T4fBleUuid.imuMagnetometerCharacteristicUuid],
callbackOnSubserviceReady: { [weak self] in self!.onSubserviceReady }(),
callbackOnBleEvent: { [weak self] in self!.onBleEvent}())] …Run Code Online (Sandbox Code Playgroud) TabBar 小部件有一个 onTap() 回调,它允许检测用户何时刚刚按下了一个选项卡。这很有用,因此我们可以准备新的 tabView 来显示一些动态数据。
TabBar 小部件还有一个拖动功能,允许更改显示的 tabView(类似于点击另一个选项卡的结果)。但在这种情况下,似乎没有办法准备新的 TabView,因为没有 onDrag() 回调。
所以问题是:有没有办法检测到 TabBarView 刚刚被拖动?