小编ont*_*oon的帖子

使用waitForExpectations时的API违规

我正在运行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)

testing ios

16
推荐指数
1
解决办法
4354
查看次数

StreamBuilder 快照始终是 ConnectionState.waiting

我以为我了解 StreamBuilders,但我有一些疑惑让我感到困惑。

我认为 ConnectionState.waiting 意味着正在创建与流的连接,因此仍然无法接收流数据。不过就我而言,我总是收到 ConnectionState.waiting 。第一次数据是initialData 中指定的数据,这很好,但是如果ConnectionState 总是“等待”,我从流evnt 获取值之后。为了在此处显示这一点,您可以查看第一次调用 builder 函数时的屏幕截图。这看起来不错:快照值是initialData参数提供的值并且ConnectionState正在等待 在此处输入图片说明

那么这是第二次调用builder函数的截图。 在此处输入图片说明

这里的快照值是一个新的流值(所以现在连接状态应该是活动的)但实际上,connectionState 仍在等待!!

  1. 那我该怎么解释呢?这是如何运作的?

  2. 为什么即使 connectionState 一直在等待,StreamBuilder 也会不断接收快照?为什么它不活跃?

  3. 我该如何调试?

dart flutter

14
推荐指数
1
解决办法
5554
查看次数

如何在 Flutter 中测试私有函数/方法?

我目前正在开发一个使用 bloc 架构的应用程序。我的集团专门使用流与 UI 进行通信。因此,除了构造函数之外,它的所有方法都是私有的(它们以“_”开头)。

所以问题是如何从文本包中的测试类中测试 bloc 的私有方法,使其无法访问其他包的私有方法。

谢谢

testing flutter

13
推荐指数
2
解决办法
5366
查看次数

使用闭包回调的ios内存泄漏

我有一个 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)

xcode memory-leaks ios swift

2
推荐指数
1
解决办法
1654
查看次数

如何检测 TabBarView 刚刚被拖动?

TabBar 小部件有一个 onTap() 回调,它允许检测用户何时刚刚按下了一个选项卡。这很有用,因此我们可以准备新的 tabView 来显示一些动态数据。

TabBar 小部件还有一个拖动功能,允许更改显示的 tabView(类似于点击另一个选项卡的结果)。但在这种情况下,似乎没有办法准备新的 TabView,因为没有 onDrag() 回调。

所以问题是:有没有办法检测到 TabBarView 刚刚被拖动?

dart flutter

2
推荐指数
4
解决办法
3313
查看次数

标签 统计

flutter ×3

dart ×2

ios ×2

testing ×2

memory-leaks ×1

swift ×1

xcode ×1