问题描述
我正在尝试为UITableViewController
我有一个简单的测试班
class FeedSnapshotTests: XCTestCase {
// Fails
func test_empty_feed_one() {
let sut = UITableViewController(style: .grouped)
sut.loadViewIfNeeded()
record(snapshot: sut.snapshot(),named: "EMPTY_FEED_ONE")
}
// Passes
func test_empty_feed_two() {
let sut = UIViewController()
sut.loadViewIfNeeded()
record(snapshot: sut.snapshot(),named: "EMPTY_FEED_TWO")
}
}
private extension FeedSnapshotTests {
func record(snapshot: UIImage,named name: String,file: StaticString = #filePath,line: UInt = #line) {
guard let imageData = snapshot.pngData() else {
return XCTFail("Failed to generate PNG data representation from snapshot",file: file,line: line)
}
let snapshotURL = URL(fileURLWithPath: String(describing: file))
.deletingLastPathComponent()
.appendingPathComponent("snapshots")
.appendingPathComponent("\(name).png")
do {
try FileManager.default.createDirectory(at: snapshotURL.deletingLastPathComponent(),withIntermediateDirectories: true)
try imageData.write(to: snapshotURL)
} catch {
XCTFail("Failed to record snapshot with error: \(error)",line: line)
}
}
}
extension UIViewController {
func snapshot() -> UIImage {
let renderer = UIGraphicsImageRenderer(bounds: view.bounds)
return renderer.image(actions: { action in
view.layer.render(in: action.cgContext )
})
}
}
目前,我只是尝试创建一个UIImage
并保存到磁盘。
但是由于某种原因,在UITableViewController
的情况下,我无法快照视图。如果我切换到UIViewController
,则可以使用。
尝试创建UImage
中的UITableViewController
时,我的测试总是在这里失败
guard let imageData = snapshot.pngData() else {
return XCTFail("Failed to generate PNG data representation from snapshot",line: line)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)