【问题标题】:Xcode 6, Swift and mock verification without exceptionsXcode 6、Swift 和模拟验证无异常
【发布时间】:2023-04-01 11:09:01
【问题描述】:

有人知道如何在 Swift 中验证 OCMock 期望吗? Swift 不使用异常,因此 XCTest 不再包含 XCTAssertNoThrow。是否有任何其他方法可以验证使用 OCMock 调用的方法?我注意到在 OCMock 中验证函数会检查 expectations 数组,所以我假设如果我们可以访问,我们可以执行 XCTAssertTrue(mock.expectations == 0)

由于在 Swift 中几乎没有关于 XCTests 的文档,因此试图弄清楚其中一些更复杂的事情

【问题讨论】:

    标签: swift ocmock


    【解决方案1】:

    好吧,这不是一个真正的答案,而是 ObjC / Swift 项目的解决方法。 编写一个对象包装器,它将运行 [mock verify] 并返回一个布尔值。

    创建一个 Obj-c H 和 M 文件。 在.h

    + (BOOL)verifyMock:(id)mock;

    在.m中

    + (BOOL)verifyMock:(id)mock
    {
        BOOL called = YES;
        @try {
            [mock verify];
        }
        @catch (NSException *exception) {
            called = NO;
        }
        @finally {
            return called;
        }
        return called;
    }
    

    现在将此 Obj-c 文件添加到您的 Bridging-Header 文件中,以便 swift 可以访问。

    在您的 Swift XCTest 文件中

    XCTAssertTrue(YourWrapperClassName.verifyMock(mock), "Method was not called")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      相关资源
      最近更新 更多