OCHamcrestExtensions 版本 1.0.1

OCHamcrestExtensions 版本 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 BSD
发布日期最后发布日期2014年12月

Elliot Chance 维护。



  • Jon Reid 和 Elliot Chance 编写

什么是 OCHamcrestExtensions?

OCHamcrestExtensions 是建立在 OCHamcrest 之上的。它添加了额外的功能,包括:

  • 对异常断言的支持。
  • 更多匹配器。

OCHamcrestExtensions 是一个可替换的 替代品,但包含原始 OCHamcrest 项目的所有源代码。如果您尝试链接这两个库,将会出现重复符号错误。

以下是添加功能的文档,有关其他所有的信息,请参考 OCHamcrest 文档

如何将 OCHamcrestExtensions 添加到我的项目中?

新匹配器

OCHamcrest 附带一组有用的匹配器。此列表仅包含 OCHamcrestExtensions 的新增匹配器。

  • 布尔型

    • assertYes - 对 assertThatBool(x, equalToBool(YES)) 的便捷方法
    • assertNo - 对 assertThatBool(x, equalToBool(NO)) 的便捷方法
    • assertTrue - 与 assertYes 相同
    • assertFalse - 与 assertNo 相同
  • 文本

    • emptyString - 匹配空字符串
  • 异常

    • ignoringReturnValue - 用来包装非 id 返回类型表达式
    • willThrow - 断言抛出特定 NSException
    • willThrowException - 断言抛出任何 NSException
    • willNotThrowException - 断言不会抛出异常

异常

检查是否抛出(或未抛出)异常通常与一般断言类似

assertThat([myObject mightThrowException], willThrowException());
assertThat([myObject mightThrowException], willNotThrowException());

断言特定名称

assertThat([myObject mightThrowException], willThrow(NSInvalidArgumentException));

处理 void 和其他非 id 相关表达式

assertThat(ignoringReturnValue(1 + 1), willNotThrowException());

使用字符串匹配器对异常原因进行匹配

NSException *e = [NSException exceptionWithName:NSInvalidArgumentException
                                         reason:@"For fun."
                                       userInfo:nil];
assertThat(ignoringReturnValue(@throw e), allOf(
    willThrow(NSInvalidArgumentException),
    containsString(@"fun."),
    nil
));

不需要指定异常断言,所以上面的内容可以更简洁地编写 - 然而,如果表达式返回的字符串包含 "fun." 且没有抛出异常,则这将是一个误报

assertThat(ignoringReturnValue(@throw e), containsString(@"fun."));

断言包含错误消息的精确异常的一种更安全和更简单的方法是使用等于性,因为等于性包含两者

assertThat(ignoringReturnValue(@throw e), equalTo(@"NSInvalidArgumentException: For fun."));