mad*_*cat 2 unit-testing core-data ios swift
当我尝试从我的模型中检索一组项目时,由于类的类型不匹配,我总是遇到向下转换错误。Swift 有一个严格的命名空间,模型项与我想插入的项不同。这是我的 NSManagedObject:
import Foundation
import CoreData
@objc(Boss)
class Boss: NSManagedObject {
@NSManaged var name: String
}
Run Code Online (Sandbox Code Playgroud)
测试类如下:
func testCheckIfFetchGetTheCorrectClass() {
// setup item
let entity = NSEntityDescription.entityForName("Boss", inManagedObjectContext: moc)
let boss = Boss(entity: entity!, insertIntoManagedObjectContext: moc)
boss.name = "Chef"
var bosses = [Boss]()
var request = NSFetchRequest(entityName: "Boss")
var e: NSError?
if let results = moc.executeFetchRequest(request, error: &e) {
println("results: \n\(results.description)\nCount:\(results.count)")
if let downcastedSwiftArray = results as? [Boss] {
// downcastedSwiftArray contains only UIView objects
bosses = downcastedSwiftArray
} else {
XCTAssert(false, "Down Cast Error")
}
println("Bosses : \n\(bosses.description)")
} else {
println("fetch error: \(e!.localizedDescription)")
abort();
}
// This is an example of a functional test case.
XCTAssert(true, "Pass")
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,调试器中将显示以下类型:
bosses [NameSpaceTestTests.Boss] 0 values
results [AnyObject] 1 value
[0] Boss_Boss_ *
Run Code Online (Sandbox Code Playgroud)
所以看起来result数组包含一个Boss与bosses
数组不匹配的类项。
如何将获取请求的结果分配给我的数组?
您将在github上找到完整的项目。
public是一种解决方法,测试依赖项不需要。问题实际上是测试目标编译了他自己的源类版本,这不是您想要的。你最终会得到相同的两个版本。
以下步骤为我修复了它:
App和AppTests| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |