2017-07-14 180 views
0

我面对一些问题的警告在以下情况:单元测试错误扔

let expect = expectation(description: "Async network call") 
SomeManager.executeCall { result in 
    do { 
     /// 1. 
     XCTAssertThrowsError(try CoreManager.method()) 
     expect.fulfill() 
    } catch {} 
} 

waitForExpectations(timeout: 15.0, handler: nil) 

在1编译器提供了一个错误,在不可达

catch块,因为没有抛出的错误会在不阻止

,如果我删除DO-赶上给出一个错误,即:

从抛功能型到非投掷函数类型的转换无效......

回答

0

XCTAssertThrowsError调用燕子的错误,所以你不应该需要一个do /渔获物。 对我来说看起来像一个错误。 作为一种变通方法尝试包裹检查功能,这样

func mustThrow() { 
    XCTAssertThrowsError(try CoreManager.method()) 
} 

,然后调用

SomeManager.executeCall { result in 
    /// 1. 
    mustThrow() 
    expect.fulfill() 
} 

你可以在本地测试定义功能,避免在文件中污染的名称。