gpt4 book ai didi

ios - 如何使用 XCTAssertThrowsSpecific

转载 作者:IT王子 更新时间:2023-10-29 08:01:02 25 4
gpt4 key购买 nike

我正在使用 XCTest 编写 Cocoa 单元测试,最近第一次使用 XCTAssertThrows。这很酷,但我想使用 XCTAssertThrowsSpecific 并需要特定的异常来让它变得更好。

这是一个示例测试:

-(void)testShortPassword {
XCTAssertThrows([user storePassword:@"abc"],@"Expect exception for short pw");
}

在我的用户类中,我有以下代码:

-(void)storePassword:(NSString*)password {

NSCAssert(password.length > 6, @"Password must be longer than 6 characters");

// go on to store the password on the keychain
}

请记住,Cocoa 通常会避免使用异常(因此返回错误并在前面的示例中显示 UI 等可能会更好)我如何以可以捕获的方式抛出异常通过 XCTAssertThrowsSpecific?我如何在 XCTAssertThrowsSpecific(expression, specificException, format...) 中指定它?

最佳答案

您应该只将异常用于异常情况,而不是用于错误处理和流程控制

话虽如此,下面是您如何使用 XCTAssertThrowsSpecific:

XCTAssertThrowsSpecific 期望异常的特定类作为第二个参数。 NSCAssert 抛出一个 NSException。要对此进行测试,请使用

XCTAssertThrowsSpecific([object methodThatShouldThrow], NSException, @"should throw an exception");

现在,这不会有太大帮助,因为很可能每个异常都是 NSException 或其子类。

NSException 具有确定异常类型的 name 属性。在 NSCAsert 的情况下,这是 NSInternalInconsistencyException。要对此进行测试,请使用 XCTAssertThrowsSpecificNamed

XCTAssertThrowsSpecificNamed(
[object methodThatShouldThrow],
NSException,
NSInternalInconsistencyException,
@"should throw NSInternalInconsistencyException"
);

关于ios - 如何使用 XCTAssertThrowsSpecific,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com