gpt4 book ai didi

ios - 使用 XCTest 测试其中包含 `try-catch` 的方法

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:47 25 4
gpt4 key购买 nike

我正在尝试测试其中包含 try-catch 的方法,但测试没有继续并且未考虑 catch block 。

假设我们有这个:

class Foo
{
func fetchData(request: NSFetchRequest) -> [AnyObject]?
{
var data: [AnyObject]? = nil
do {
data = try context.executeFetchRequest(request)
} catch {}

return data
}

func fetchData(entity: String, predicate: NSPredicate?) -> [AnyObject]?
{
let entity = NSEntityDescription.entityForName(entity, inManagedObjectContext: context)
let request = NSFetchRequest()
request.entity = entity
request.predicate = predicate
return fetchData(request)
}
}

class SampleTests: XCTestCase
{
// Assume that entity 'Employee' does not exist in the core data model
func testFetchDataWithNonExistingEntity()
{
let foo = Foo()
let predicate = NSPredicate(format: "id == %i", 22345)
let data = foo.fetchData("Employee", predicate: predicate)
XCTAssertNil(data, "Data should be nil.")
}
}

测试在 data = try context.executeFetchRequest(request) 处停止。

最佳答案

你有一个空的 catch block 。

你可以添加:

catch let error as NSerror {
// Do something with the error, e.g. return non-nil value.
print("error \(error)")
return []
}

处理错误。

一些额外的尝试:

  • 确保Debug executable 已针对您的目标在测试下的方案进行检查。

  • 如果您打开了测试失败 断点,那可能会发生冲突,您应该将其关闭。

关于ios - 使用 XCTest 测试其中包含 `try-catch` 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537165/

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