AssertThrows 0.1.1

AssertThrows 0.1.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年3月
SPM支持SPM

Witold Skibniewski维护。



  • Witold Skibniewski

AssertThrows

Swift 2.x中针对抛出函数的自定义断言。更多信息请参阅博客文章

使用

自定义断言允许进行以下抛出函数断言

  1. 抛出错误。
  2. 抛出特定的 ErrorType 实现者。
  3. 抛出特定的 ErrorType 实现者的案例。

示例使用

func test_AssertsThrowingAnyError() {
    let movie = Movie()
    AssertThrows(try movie.throwOnUnkown(.Unkown))
}

func test_AssertsThrowingSpecificType() {
    let movie = Movie()
    AssertThrows(TestError.self, try movie.throwOnUnkown(.Unkown))
}

func test_AssertThrows_ThrowingSpecificCaseOfType() {
    let movie = Movie()
    AssertThrows(TestError.IllegalArgument, try movie.throwOnUnkown(.Unkown))
}

有一个限制 - ErrorType 兼容的枚举,如果有关联数据,也必须实现 Equatable 协议,才能用 AssertThrows 进行验证。标准枚举都是免费的。

自定义断言解决了像这样的普通 XCTest 测试的问题

func test_throwOnUnkown_UnknownPassed_ThrowsAnyError() {
    do {
        try Movie().throwOnUnkown(.Unkown)
        XCTFail()
    } catch {
    }
}

func test_throwOnUnkown_UnknownPassed_ThrowsTestError() {
    do {
        try Movie().throwOnUnkown(.Unkown)
        XCTFail()
    } catch {
        guard let _ = error as? TestError else {
            return XCTFail()
        }
    }
}

func test_throwOnUnkown_UnknownPassed_ThrowsIllegalArgument() {
    do {
        try Movie().throwOnUnkown(.Unkown)
        XCTFail()
    } catch {
        guard let error = error as? TestError else {
            return XCTFail()
        }
        XCTAssertEqual(TestError.IllegalArgument, error)
    }
}

安装